我正在使用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.com到http://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”,我认为这很令人伤心。
什么是处理这个问题的最好方法?
我的问题是真正的“Script.Render(...)”函数呈现虚拟目录。 – 2013-04-10 11:11:22
你说你已经在iis中配置了一些重写规则。我想知道是否可以使用RouteConfig.RegisterRoutes(RouteTable.Routes)在启动代码中捕获路由问题? – 2013-04-10 20:08:50