1

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

HTTP 错误 406.0 - 不可接受

无法显示资源,因为您的浏览器不接受文件扩展名。

请求被拒绝,因为它包含请求的文件扩展名不支持的 MIME 类型的 Accept 标头。

验证请求的文件扩展名的 MIME 设置,以确保此 MIME 类型是可接受的。

406错误页面截图

是否有任何 web.config 设置或其他技术可以绕过此验证,以便在无需重写路径逻辑的情况下不会收到此错误?我的谷歌搜索失败了。例如,我发现这个 IIS 论坛帖子链接自SO Answer,其中谈到

将所有请求映射到 ASP.NET 并使用 ASP.NET 的 StaticFileHandler 为它们提供服务

但是,该帖子没有解释如何执行此操作;它似乎也不适用。

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

作为另一个花絮,Nancy 路由返回表单的显式视图

return View["view_name", myModel];

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

4

2 回答 2

3

虽然本身不​​是修复或答案,但我目前的工作(对于任何可能感兴趣的人)是调整路线以使用尾部斜杠。举个例子:

"/path/to/xml_file.xml"   //  Still returns a 406.0 error
"/path/to/xml_file.xml/"  //  Works properly (notice the trailing slash)
于 2015-11-19T15:39:45.663 回答
1

这是 Rackspace 知识中心的链接,它显示了如何更改 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 问题的方法...

于 2015-11-19T03:03:28.850 回答