如何使IIS尊重相对路径



在IIS 10中,我在端口4553上运行了一个网站。在本地,这个网站运行良好。因为我想向最终用户展示这个网站,我需要:

  1. 通过Azure应用程序网关使其可用
  2. 使用URL中的深度链接将端口4553路由到443,因为最终用户的代理只允许通过端口443的流量。我不能将端口443设为IIS解决方案的默认端口,因为端口443已被另一个web解决方案占用

我把这一切都做好了:

  • https://localhost:4553→VM上的本地工作
  • https://external.website.com/iis/solution/→可以访问,并且确实显示了登录页,但路径不正确

例如,登录页包含:

@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/jquery.dataTables.min.js"></script>

AAG/IIS不理解此路径。尽管登录页确实有效,但IIS会尝试在"https://external.website.com/Scripts/jquery.dataTables.min.js"而它应该是"https://external.website.com/iis/solution/Scripts/jquery.dataTables.min.js"因此,脚本不尊重在URL中添加iis/solution

当我手动将其更改为时

<script src="~/iis/solution/Scripts/jquery.dataTables.min.js">
</script>"

它确实有效。

但是,对于所有HTML和其他源文件来说,更改这一点太过分了。此外,它不能在每次IIS解决方案需要更新时都进行这些更改。

我的问题;我是否可以在IIS设置或登录页中更改更高级别的内容,以确保文件的路径正确?或者它是一个改变物理路径的选项,例如?

您是否将应用程序托管在虚拟目录下,而不是应用程序"解决方案"下?如果是这样,IIS将无法加载正确的URL。

请确保您将项目托管在虚拟应用程序中,而不是文件夹或虚拟目录中。

https://learn.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/application/

如果您不想这样做,可以使用出站规则重写html<script>标记。在渲染的html页面中,它应该看起来像

你可以把它重写成

https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-outbound-rules-for-url-rewrite-module

最新更新