如何绕过 IIS 中的 Accept header 验证?

How do I bypass Accept header validation in IIS?

我在 ASP.Net 上托管了一个 Nancy 网站,其中包含许多自定义路由。这些路由包括看起来像文件路径的映射(例如 /path/to/xml_file.xml),但解析为应该显示在浏览器中的 HTML 文件。对于大多数文件,这可以正常工作。但是,对于 XML 文件(可能还有其他 mime 类型),我从 IIS 8 Express 收到 406.0 HTTP 错误,明确指出

HTTP Error 406.0 - Not Acceptable

The resource cannot be displayed because the file extension is not being accepted by your browser.

The request was rejected because it contained an Accept header for a MIME type that is not supported for the requested file extension.

Verify the MIME settings for the file extension that was requested to make sure this MIME type is acceptable.

是否有任何 web.config 设置或其他技术可以绕过此验证,这样我就不会在不必重写路径逻辑的情况下遇到此错误?我的 Google 搜索失败了。例如,我发现 this IIS forum post linked from the SO Answer 谈到

map all reqests to ASP.NET and use the ASP.NET's StaticFileHandler to serve them

然而,post并没有解释如何做到这一点;它似乎也不适用。

编辑:(添加了上面的错误页面图片)

作为另一个花絮,南希路线 returns 形式的明确视图

return View["view_name", myModel];

因此,应该绕过内容协商。

这里是 Rackspace 知识中心的 link,展示了如何更改 web.config 文件中静态内容的 MIME 映射。

https://www.iis.net/configreference/system.webserver/staticcontent/mimemap

还有这个来自 MS 的更深入。

https://www.iis.net/configreference/system.webserver/staticcontent/mimemap

它们都包含 web.config 文件中的这一节。

<configuration>
  <system.webServer>
    <staticContent>
      <remove fileExtension=".extension" />
      <mimeMap fileExtension=".extension" mimeType="application/example" />
    </staticContent>
  </system.webServer>
</configuration>

如果这就是解决 406.0 问题的方法...

虽然本身不​​是修复或答案,但我目前的解决方法(对于可能感兴趣的任何人)是调整路由以使用尾部斜杠。例如:

"/path/to/xml_file.xml"   //  Still returns a 406.0 error
"/path/to/xml_file.xml/"  //  Works properly (notice the trailing slash)