【问题标题】:How to make IIS respect relative path?如何让 IIS 尊重相对路径?
【发布时间】:2020-04-26 08:36:07
【问题描述】:

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

  1. 通过 Azure 应用程序网关使其可用。
  2. 使用 URL 中的深层链接将端口 4553 路由到 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 设置或登录页面中更改更高级别的内容,以确保文件取自正确的路径?或者是否可以选择更改物理路径?

【问题讨论】:

  • 你确定要使用AAG,不能让IIS直接服务网站吗?
  • 我现在需要 AAG。公司政策
  • 什么确切地是说您需要 AAG 的政策?这听起来不对。
  • 我有很多。但是例如防火墙和端口管理不能安排在vm本身上。该解决方案必须适合当前设置,而不是绕过 AAG
  • 我正在做的这个具体实现是一个更大的解决方案的附加组件。因此,绕过管理控制台网页的当前结构并不是首选

标签: asp.net iis iis-10


【解决方案1】:

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

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

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

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

你可以改写成

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

【讨论】:

  • 感谢您的回复。该项目未在虚拟应用程序中运行。当我右键单击-> 添加应用程序-> 然后添加项目。我还需要做什么才能完成这项工作?如果选项 1 不起作用,重写将是我的第二选择,因为它不仅仅是需要添加的
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 2019-12-22
  • 1970-01-01
  • 2020-06-27
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
相关资源
最近更新 更多