Asp.net mvc IIS7重定向~/文件位置

Asp.net mvc IIS7重定向~/文件位置,asp.net-mvc,asp.net-mvc-3,iis-7,Asp.net Mvc,Asp.net Mvc 3,Iis 7,我正在使用ASP.Net MVC,我的包看起来像: bundles.Add(new Bundle("~/bundles/rgmpjsbundle").Include( "~/Scripts/jquery-{version}.js", "~/Scripts/jquery-ui-{version}.js", "~/Scripts/jquery.unobtrusive*", "~/Scrip

我正在使用ASP.Net MVC,我的包看起来像:

        bundles.Add(new Bundle("~/bundles/rgmpjsbundle").Include(
            "~/Scripts/jquery-{version}.js",
            "~/Scripts/jquery-ui-{version}.js",
            "~/Scripts/jquery.unobtrusive*",
            "~/Scripts/jquery.validate*",
            "~/Scripts/modernizr-*",
            "~/Scripts/jquery.address-1.5.js",
            "~/Scripts/tabmenu.js",
            "~/Scripts/knockout-2.2.0.js",
            "~/Scripts/knockout.mapping-latest.js",
            "~/Scripts/jquery-ui-1.10.3.custom.js",
            "~/Scripts/KnockoutCustomBindings.js",
            "~/Scripts/knockout-sortable*",
            "~/Scripts/moment.js"));
这是相当标准的。当我在开发区域部署我的应用程序时,问题就来了。IIS的设置如下(我知道这不太好):

但是,;生产设置不同,因为每个应用程序都有自己的网站。事实证明,这是我的一大难题,因为在DEV/UAT结构下,我的应用程序将使用~一路跳回DEV/UAT网站(Shell站点),但在PROD环境中,它将返回到web应用程序的根。除了使用MVC URL重写之外,我会使用相对引用


有人能解决这个问题吗?也许IIS7上的某些设置可以捕获~references?

您可以尝试在web配置中创建@html.getMyPath()等帮助程序和一个键(dev,UAT Production)。该键应该包含key=“pathToFolder”value=“/”或“~/”之类的内容,然后在应用程序启动时将该配置加载到缓存中

助手将读取参数并找到文件路径的解析

另一种解决方案可能是,对于每个环境,您可以设置不同的“根位置”,并使用server.mappath确定每个环境的文件的物理位置。此实现也应该位于html帮助程序中


我希望这有帮助

老实说,您的UAT环境似乎与生产元素不匹配。请告诉我,但我无法更改:-(您可能会发现最好的解决方案可能是将文档根存储在machine.config中,并使用它而不是~/)。
DEVWEBSITE
   ->  app 1
   ->  app 2
   ->  app 3
UATWEBSITE
   ->  app 1
   ->  app 2
   ->  app 3