如何使IIS尊重相对路径?

问题描述 投票:0回答:1

在IIS 10中,我在端口4553上运行了一个网站。该网站在本地运行良好。因为我想向最终用户公开此网站,所以我需要:

  1. 通过Azure应用程序网关使其可用。
  2. 使用URL中的深层链接将端口4553路由到443,因为最终用户的代理仅允许通过端口443进行通信。我无法将443端口设置为IIS解决方案的默认端口,因为端口443已被另一个端口占用网络解决方案。

我已经全部工作了:

例如,目标网页包含:

@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”中查找jquery脚本。而应该是“ 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设置或登录页面中进行更高级别的更改,以确保从正确的路径获取文件?还是例如更改物理路径的选项?

asp.net iis iis-10
1个回答
0
投票

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

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

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

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

您可以将其重写为

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

© www.soinside.com 2019 - 2024. All rights reserved.