asp.net - 如何让 IIS 尊重相对路径?
问题描述
在 IIS 10 中,我在端口 4553 上运行了一个网站。该网站在本地运行良好。因为我想向最终用户公开这个网站,所以我需要:
- 通过 Azure 应用程序网关使其可用。
- 使用 URL 中的深层链接将端口 4553 路由到 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 ”中查找 jquery 脚本,而它应该是“ https://external.website ” .com/iis/solution/Scripts/jquery.dataTables.min.js “所以脚本不尊重iis/solution
在 URL 中添加的内容。
当我手动将其更改为
<script src="~/iis/solution/Scripts/jquery.dataTables.min.js">
</script>"
它确实有效。
但是对于所有 HTML 和其他源文件来说,改变它太多了。此外,每次 IIS 解决方案确实需要更新时,它都无法进行这些更改。
我的问题; 我可以在 IIS 设置或登录页面中更改更高级别的内容,以确保文件取自正确的路径?或者是否可以选择更改物理路径?
解决方案
您是否将应用程序托管在虚拟目录而不是应用程序“解决方案”下?如果是这样,IIS 将无法加载正确的 URL。
请确保您将项目托管在虚拟应用程序中,而不是文件夹或虚拟目录中。
https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/application/
如果您不想这样做,您可以<script>
使用出站规则重写 html 标记。在呈现的 html 页面中,它应该看起来像
你可以将它重写为
推荐阅读
- blazor - Blazor 第一次加载很慢
- python - 如何从字典中提取键并将其作为主键
- mvvm - 订阅关闭,但仅在保存项目时关闭
- java - springdoc-openapi 如何在不更改 toString 的情况下使用 @JsonValue 枚举格式?
- python - 由于证书,尝试将 Python 客户端连接到 AWS IoT 时出错
- python - TypeError: module() 最多接受 2 个参数(给定 3 个)不和谐机器人错误
- python - 如何通过 python winreg 获取安装的 chrome 版本
- javascript - 为什么来自 Freecodecamp 的 CDN 链接在 Codesandbox React 模板中引发错误?
- python - 安装扩展时如何解决 jupyter lab 依赖问题?
- javascript - 如何在猫鼬文档对象上查找数组?