使用 ASP.NET 开发服务器设置 MIME 类型
Posted
技术标签:
【中文标题】使用 ASP.NET 开发服务器设置 MIME 类型【英文标题】:Setting MIME types using the ASP.NET Development Server 【发布时间】:2011-08-20 22:41:48 【问题描述】:我在 web.config 文件中添加了以下内容,但这似乎被 Visual Studio 2010 中内置的开发服务器忽略了。有谁知道如何更改开发服务器中的 MIME 类型?
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
<mimeMap fileExtension=".ogg" mimeType="audio/ogg" />
<mimeMap fileExtension=".oga" mimeType="audio/ogg" />
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
<mimeMap fileExtension=".webm" mimeType="video/webm" />
</staticContent>
</system.webServer>
【问题讨论】:
刚刚记得我现在可以在 VS2010 SP1 中使用 IIS Express,这样我就可以运行了。我也可以明显地切换到完整的 IIS 来解决这个问题......但我很想知道是否有办法让 MIME 类型与默认的开发服务器一起工作。 【参考方案1】:Visual Studio (Cassini) 中的内置开发 Web 服务器不知道 <system.webServer>
,只有 IIS7.x 或 IIS7.5 Express 会使用这些设置。
Visual Studio 的开发 Web 服务器中的静态文件内容类型也是硬编码的。
来自Microsoft.VisualStudio.WebHost.Connection
(使用.NET Reflector 反汇编):
private static string MakeContentTypeHeader(string fileName)
string str = null;
FileInfo info = new FileInfo(fileName);
switch (info.Extension.ToLowerInvariant())
case ".bmp":
str = "image/bmp";
break;
case ".css":
str = "text/css";
break;
case ".gif":
str = "image/gif";
break;
case ".ico":
str = "image/x-icon";
break;
case ".htm":
case ".html":
str = "text/html";
break;
case ".jpe":
case ".jpeg":
case ".jpg":
str = "image/jpeg";
break;
case ".js":
str = "application/x-javascript";
break;
if (str == null)
return null;
return ("Content-Type: " + str + "\r\n");
说实话,随着 IIS7.5 Express 的出现,我不明白您为什么要使用内置的 Web 服务器。在生产服务器上的部署时间方面,Cassini 可能会造成如此多的混乱,因为它与真正的交易(安全性、配置等)完全不同,而如果您可以让您的站点在 IIS7.5 Express 上运行,那么就会有相当高的部署到生产 IIS7.5 服务器上“正常工作”的可能性。
考虑到使用 IIS7.5 Express 运行非常容易,如果微软将 Cassini 服务器从下一版本的 Visual Studio 中移除,我不会感到惊讶。
【讨论】:
我赞成你的答案,因为它是准确的,但我绝对讨厌它:p 我真的不在乎想要搞砸 IIS 或任何东西,我只是想要它,这样当我遇到小绿时VS2010 中的播放按钮,它提供具有正确 MIME 类型的 PNG。那是过分的要求?显然是…… @user435779 - 感谢您的 +1。 IIS Express 相当轻松,并且会像 Cassini 一样运行。 IIS MMC 控制台没有任何问题。只需告诉 VS2010 您要在 IIS Express 中启动和调试(在您的项目属性 Web 选项卡中),然后按播放按钮...VS2010 会在后台静默地为您的项目配置 IIS Express。 这个答案真的很有帮助。作为对这样做的其他人的保证:安装 IIS 后我不得不重新启动 VS,并且在我的项目设置中切换到使用 IIS Express 后,VS 崩溃了,但除此之外它相当轻松且绝对值得。 IIS Express 非常好用,但并不是在所有情况下都有用,尤其是当您尝试调试两个单独的实例 app_start 和 app_end 时,如果您关闭其中任何一个实例,这两个实例都会结束。 +1 以获得非常清晰简洁的答案。 @Crypth - 感谢您的客气话。我同意,有时您需要打开完整的 IIS 并附加到进程以调试一些极端情况。【参考方案2】:刚遇到这个问题,但必须找到 IIS Express 的配置,以便我可以添加 mime 类型。对我来说,它位于C:\Users\<username>\Documents\IISExpress\config\applicationhost.config
,我可以在那里添加正确的“mime map”。
【讨论】:
这个修复只花了几秒钟!谢谢!对于尝试此操作的其他人,在开始编辑之前复制 applicationhost.config 的备份会发出警告。【参考方案3】:同样可以通过使用 IIS 管理器修改 MIME 类型来完成 - Here
【讨论】:
以上是关于使用 ASP.NET 开发服务器设置 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章
由于不允许的 MIME 类型(“text/html”),ASP Net Core 内部的 Angular 8 被阻止
ASP.NET Core设置Web API 响应的数据格式——Produces 特性篇
xml 在ASP.NET项目的Web.config中定义Web字体Mime类型,以确保Web服务器正确处理为您的字体提供服务。