【发布时间】:2016-05-31 22:49:50
【问题描述】:
当您在 Visual Studio 中使用 IIS Express 测试 Web 应用程序时,您将能够像这样(在 ASPX 文件中)添加对脚本文件的引用:
<head>
<script src="/Javascript/jquery-2.1.1.min.js" type="text/javascript" charset="utf-8"></script>
</head>
但是,当您在标准 IIS 服务器(使用 Web 部署包)上部署完全相同的应用程序时,您将收到缺少的错误 404,因为浏览器将无法解析 url。
要修复它,我可以简单地从路径中删除斜杠:
<script src="Javascript/jquery-2.1.1.min.js" type="text/javascript" charset="utf-8"></script>
但是,此问题与如何修复链接无关,因为此问题已被多次询问和回答。我想了解的是为什么 IIS Express 能正确处理这些 url 而 IIS Express 却不能?是安全问题(例如:浏览器在您自己的计算机上工作时可以访问您的本地文件,而在远程服务器上则不然)还是设置问题没有在 web 包中导出?
【问题讨论】:
-
在 IIS 中没有看到您的网络 应用程序 的结构(猜测):您的 应用程序根目录 在 IIS 中是“不同的”。
-
确实,IIS Express 似乎从根目录运行应用程序,而 IIS 上的 Web 部署默认情况下会在子目录下创建应用程序。在根目录中安装确实可以解决问题,但由于路径是相对的,我希望它是相对于应用程序而不是站点的。
-
我认为您必须深入研究配置文件,以确保您的测试至少基于等效设置。同时,IIS Express 在很多方面与 IIS 不同,所以我并不感到惊讶。
-
在这种情况下,它应该是相同的(IIS / express) - 如果您的网站由 ASP.Net 运行/处理,那么 "root" == Asp.net app根。检查您的网络部署设置:文件系统子目录确实/不应该等同于应用程序“子”。或者检查你部署的根目录是否已经是一个应用程序(如果是,不要在那里部署你的新应用程序)......
-
可能是因为“bindingInformation”属性不同,在 IIS 中:“:[port no]:” IIS Express:“:[port no]:localhost”。我遇到了类似您的问题,并通过将 * 放在 IIS Express 中此标记的第一个和最后一个值来解决它:“:[port no]:*”
标签: asp.net iis web-applications relative-path iis-express