【问题标题】:IIS express doesn't serve portable network graphicsIIS express 不提供便携式网络图形
【发布时间】:2014-01-07 16:04:57
【问题描述】:

我的情况

我使用 ASP.NET MVC 5 构建了一个网站。该网站在 IIS express (Windows 8) 上运行。我有网络开发的基本知识,但我不知道如何解决我的问题。

问题

我的 IIS express 没有按预期提供我的便携式网络图形。我总是看到带有以下默认描述的 IIS express 的默认 404 页面:

HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 

第一次尝试

我试图通过将以下代码添加到我的 Global.asax.cs 文件来缩小问题的范围。仅当请求的文件可用时,才应处理该请求。但是请求的 png 始终可用...

Global.asax.cs(片段)

public override void Application_BeginRequest(object sender, System.EventArgs e)
{
  if (System.IO.File.Exists(System.Web.HttpContext.Current.Request.PhysicalPath))
    base.Application_BeginRequest(sender, e); 
}

第二次尝试

因为我认为我的 [IIS 不知道][1] 可能是便携式网络图形的 MIME 类型,所以我最终在我的 Web.Config 中添加了静态文件处理程序:

web.config(片段)

  <add name="StaticFileTS"  verb="GET,HEAD" path="*.ts"  type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />
  <add name="StaticFileMap" verb="GET,HEAD" path="*.map" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />
  <add name="StaticFileCss" verb="GET,HEAD" path="*.css" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />
  <add name="StaticFileJs"  verb="GET,HEAD" path="*.js"  type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />
  <add name="StaticFilePng" verb="GET,HEAD" path="*.png" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />
  <add name="StaticFileJpg" verb="GET,HEAD" path="*.jpg" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />
  <add name="StaticFileGif" verb="GET,HEAD" path="*.gif" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />
  <add name="StaticFileIco" verb="GET,HEAD" path="*.ico" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc" />

你能告诉我一些想法,我忘记了什么吗?您需要更多信息吗?

谢谢:)

更新 #1

我要调用的 URL 是:
http://localhost:60809/Merkliste/Images/Icons/ButtonBar/ButtonBarInclude/Download_All.png

物理文件路径为:
C:\softdev\Projectname\Areas\Merkliste\Images\Icons\ButtonBar\ButtonBarInclude\Download_All.png

我已经尝试将图像的构建操作设置为 "embedded ressource" 而不是 "content"

【问题讨论】:

  • 您的文件的路径是什么,Web 服务器的根目录是什么,您使用什么 URL 访问它?
  • IIS express 默认提供 png 文件就好了。您根本不必将 mime 类型添加到 web.config。如果我是你,我会在别处寻找问题。
  • 对我来说听起来像是一个路由问题...您是否进行了适当的忽略,或者您甚至可以使用 StaticFileHandler 而不是 MvcHttpHandler。 MvcHttpHandler 建议您将从.net 流式传输文件,而您的语言建议您尝试提供静态文件。
  • 随意写PNG而不是便携式网络图形;)
  • 您是否检查过 IIS 日志以确认 404 消息与正确的文件相关?另外,您是否通过命令行检查以确保文件扩展名完好无损?

标签: c# asp.net asp.net-mvc iis iis-express


【解决方案1】:

在您的 web.config 中尝试像这样添加 mime 类型:

<system.webServer>
  ...
  <staticContent>
    <mimeMap fileExtension=".png" mimeType="image/png" />
  </staticContent>
</system.webServer>

我还会使用 fiddler 进行调查以查看确切的 http 请求,这可能与您的标记或 css 有关。

【讨论】:

  • 这看起来很有帮助 :( 但事实并非如此。无论如何,谢谢!
  • 不用担心。你是如何访问图像的?失败的确切网址是什么?
  • 您可以在更新后的问题中找到确切的 url :)
【解决方案2】:

尝试将文件包含在您的 VS 项目中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多