我正在开发一个 Asp.net mvc 应用程序,在 ASP.net 开发服务器上一切正常,但是当我试图在 IIS 7 上托管它时。我遇到了与 URL 解析相关的问题。我在 Javascript 中使用了相对路径来提供图像。脚本文件在 ~/Scripts/文件夹中,图像文件在 ~/Content/images/文件夹中。现在在 javascript 文件中,我试图通过给出相对路径来使用 give http://localhost/WebApp1/controller1/action1/ 它试图在 http://localhost/controller1/action1/ 找到它找不到文件。
最佳答案
如果我的理解是正确的,那么您现在是从 IIS7 的域根目录运行 WebApp,而不是从您的开发环境运行 WebApp1?
因此,如果我的假设是正确的,那么 ~/ 现在应该解析为 http://localhost/ 而不是 http://localhost/WebApp1/
如果这仍然是正确的,那么你的文件夹结构已经全部向上移动了一级,你的 ~/scripts 文件夹在绝对路径中:
和你的图像文件夹:
http://localhost/Content/Images/
为了从您的脚本访问您的图像,您可以使用多种方法。最简单的方法是使用脚本目录中的相对路径:"../Content/Images/MyImage.jpg"
或者您可以使用 document.location.host 在 javascript 中构建完全限定的路径名:document.location.host + "/Content/Images/MyImage.jpg"
另一种方法是让 ASP.NET 动态构建脚本的这一部分,以便注入(inject)完全限定的路径名。您可以使用 ScriptManager.RegisterStartupScript 或 ScriptManager 来完成此操作。注册脚本 block
给这只猫剥皮的方法真的有很多,它们只是我能想到的前 3 种。
关于javascript - Javascript 文件中的相对图像 URL - ASP.net MVC 和 IIS 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/342364/