4

我正在开发一个 Asp.net mvc 应用程序,在 ASP.net 开发服务器中一切正常,但是当我尝试在 IIS 7 上托管它时。我遇到了与 URL 解析相关的问题。我在 Javascript 中使用了相对路径来提供图像。脚本文件位于 ~/Scripts/ 文件夹中,图像文件位于 ~/Content/images/ 文件夹中。现在在 javascript 文件中,我试图通过给出像 http://localhost/WebApp1/controller1/action1/ 这样的相对路径来使用给定,它试图在http://localhost/controller1/action1/找到它并且不能;t找到文件。

4

4 回答 4

4

如果我的阅读方式是正确的,那么您现在正在从 IIS7 的域根目录运行 WebApp,而不是从您的开发环境中运行 WebApp1?

所以,如果我的假设是正确的,那么~/现在应该解析为http://localhost/而不是http://localhost/WebApp1/

如果这一切仍然正确,那么您的文件夹结构已经与绝对路径中的 ~/scripts 文件夹一起上移了一级:

http://localhost/脚本/

和您的图像文件夹为:

http://localhost/内容/图像/

为了从脚本中访问图像,您可以使用多种方法。最简单的是使用脚本目录中的相对路径:“../Content/Images/MyImage.jpg”

或者您可以使用 document.location.host 在 javascript 中构建完全限定的路径名​​:document.location.host + "/Content/Images/MyImage.jpg"

另一种方法是让 ASP.NET 动态构建这部分脚本,以便注入完全限定的路径名​​。您可以使用ScriptManager.RegisterStartupScriptScriptManager.RegisterScriptBlock

真的有很多方法可以给这只猫剥皮,它们只是我能想到的前 3 种。

于 2008-12-05T00:22:00.693 回答
1

尝试:

<a href="~/controller1/action1/" id="testLnk" runat="server">

runat 属性应确保框架解析它。您还可以使用 ResolveUrl 方法。

于 2008-12-04T22:54:21.587 回答
1

我遇到了同样的问题,并找到了 David Banister 的元素解决方案。问题在于 MVC 控制器的 index 操作以(www.mysite.com/viewName,而不是 www.mysite.com/viewName/index)的形式返回一个 URL,Web 浏览器稍后在尝试引用 css 时会失败或使用相对路径语法 (../../) 的 js 文件。

他的解决方案对我很有效。希望这可以帮助某人。祝你好运。

http://blog.davidbanister.com/2010/09/28/mvc-fixes-relative-path-issues-in-asp-net-mvc-2/

于 2011-02-16T16:54:54.613 回答
0

我过去遇到过这个问题,请尝试使用波浪号

~/controller1/action1/

于 2012-01-04T18:25:22.720 回答