【问题标题】:IIS7 to redirect ~/ file locationsIIS7 重定向 ~/ 文件位置
【发布时间】:2013-08-14 16:06:34
【问题描述】:

我正在使用 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 的设置如下(我知道这不太好):

DEVWEBSITE
   ->  app 1
   ->  app 2
   ->  app 3
UATWEBSITE
   ->  app 1
   ->  app 2
   ->  app 3

但是;生产设置不同,因为每个应用程序都有自己的网站。事实证明,这对我来说是一个正确的痛苦,因为在 DEV/UAT 结构下,我的应用程序将使用 ~ 一直跳回 DEV/UAT 网站(Shell 站点),但在 PROD 环境中它会回到Web 应用程序的根目录。我会使用相对引用,除非我使用 MVC URL 重写。

有没有人能解决这个问题?也许 IIS7 上的一些设置可以捕获 ~ 引用?

【问题讨论】:

  • 老实说,您的问题是,您的 UAT 环境似乎与您的生产元素不匹配。
  • 告诉我这件事,但我无法改变 :-(
  • 您可能会发现最好的解决方案可能是将文档根目录存储在 machine.config 中,并使用它而不是 ~/。

标签: asp.net-mvc asp.net-mvc-3 iis-7


【解决方案1】:

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

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

其他解决方案可能是,您可以为每个环境设置不同的“根位置”并使用 server.mappath 来确定每个环境的文件的物理位置,此实现也应该在 html 帮助器中。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 2011-06-29
    • 2010-12-07
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2013-05-12
    • 2012-03-31
    相关资源
    最近更新 更多