3

我正在使用ASP.NET MVC4和WinHost。如何使用URL重写和ASP.NET优化的捆绑包管理winhost上的子域

就像问问题here,我碰到了同样的问题:

我尝试WinHost和我遇到一些问题, 子域。在WinHost上,您可以为每个托管 帐户拥有多个子域,但每个子域指向根网站。例如。你可以在 有www.example.com,sub1.example.com和sub2.example.com,但是所有 都显示http://www.example.com/的内容。

其他主机允许您将子域指向 网站中的子文件夹。这将允许您将sub1.example.com指向/ sub1, sub2.example.com,将/ sub2和www.example.com指向/。

WinHost建议使用一个asp/aspx页面重定向 http://sub1.example.comhttp://sub1.example.com/sub1,它指向 到/ SUB1。虽然这将工作,我想没有在 的URL两次的子域。

所以我尝试使用IIS7 URL重写指向http://sub1.example.com到 /sub1。本鲍威尔在his blog上详细描述了这一点。

我设法让这部分工作,所以http://sub1.example.com实际上指向我的虚拟应用程序“/ sub1”在IIS中。

如果我使用Url.Content,它可以完美地工作。

现在,我正在使用ASP.NET优化和捆绑脚本和CSS。问题是,它确实需要一个相对URL,即:

  bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*")); 

但是,因为它在这里相对URL是什么,我会在标记得到:

<script src="/sub1/bundles/jqueryval?v=UgyEMAYOuSB9Bb6HcOEVHpd6fIIp54yF086SRNVcdIY1"></script> 

当然,因为“SUB1的, “它没有找到该文件。我想到了URL重定向,我从来没有真正的工作。也许MVC中的路线?不确定如何做到这一点。我也可以放弃捆绑使用“Url.Content”,我认为这很令人伤心。

什么是处理这个问题的最好方法?

回答

1

我知道你可以使用IBundleTransform来根据独特的情况修改包中的内容。您可能能够修改捆绑包上下文本身。这里是一个链接MVC4 StyleBundle not resolving images

+0

我的问题是真正的“Script.Render(...)”函数呈现虚拟目录。 – 2013-04-10 11:11:22

+0

你说你已经在iis中配置了一些重写规则。我想知道是否可以使用RouteConfig.RegisterRoutes(RouteTable.Routes)在启动代码中捕获路由问题? – 2013-04-10 20:08:50