为什么在本地IIS上部署的ASP.NET中无法正确处理图像

时间:2011-10-13 10:36:52

标签: asp.net css asp.net-mvc iis

我使用ASP.NET 4(Visual Studio 2010)MVC2架构创建了一个Web应用程序,并将其部署到虚拟目录EasyMan4中的本地IIS服务器上。现在使用解决方案资源管理器我已将图像添加到内容文件夹。在此之后,在Site.Master页面中,我添加了一个img标记,如下所示:

<img src="../../Content/HomeIcon.png" height="64" width="64" alt="Home" />

请注意,css文件的加载方式如下:

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

尽管.css和.png文件都位于同一位置,但在通过http://localhost/EasyMan4/查看网站时,css会正确加载,而png则不会。

通过Visual Studio Development Server启动同一个项目,完美呈现了页面。但是,IIS无法正确显示图像。

仔细观察后,我发现虽然Chrome开发者工具中css文件的位置为http://localhost/EasyMan4/Content/site.css,但图片的位置为http://localhost/Content/HomeIcon.png.

请注意,由于我不熟悉IIS管理器,因此我更改了IIS管理器中的任何内容,但更改IIS身份验证类型除外。目前,我已禁用除Windows身份验证之外的所有身份验证类型。请告知我应该怎么做以使图像正确显示

2 个答案:

答案 0 :(得分:2)

im MVC开发人员可以告诉你,MVC是一个关于配置框架的约定,最佳实践是将所有文件放在正确的有序文件夹中。 例如,对于Images,您可以在Content目录中调用“Images”创建一个文件夹,并将图像放在那里,与CSS文件一样,放在“CSS”或“stylesheet”目录中。 然后使用MVC框架的强大帮助器。

对于图像使用

<img src="<%= Url.Content( "~/Content/Images/HomeIcon.png" ) %>" height="64" width="64" alt="Home" />

和样式表使用

<link href="<%= Url.Content( "~/Content/CSS/Site.css" ) %>" rel="stylesheet" type="text/css" />

这种方式允许在调试时和IIS中的Visual Studio中使用相同的行为

我希望答案对您有所帮助,如果解决您的问题,请将其标记为正确答案

CYA, 达里奥

答案 1 :(得分:0)

我建议您创建一些UrlHelper扩展方法,以便保持一致。这样您就可以知道图像,css和脚本文件的位置。注意使用代字号“〜”这意味着您的路径从应用程序的根开始。

public static class UrlHelperExtension
{

    public static string Stylesheet(this UrlHelper helper, string fileName)
    {
        return helper.Content(String.Format("~/content/css/{0}", fileName));
    }

    public static string Image(this UrlHelper helper, string fileName)
    {
       return helper.Content(String.Format("~/content/images/{0}", fileName));
    }

    //More helpful methods ....
}

然后要访问它们,您可以在视图中执行以下操作

<img src="<%= Url.Image("HomeIcon.png") %>" alt="Home" />

<link href="<%= Url.Stylesheet("Site.css")%>" rel="stylesheet" type="text/css" />