我在ASP.Net上托管了一个Nancy网站,其中包含许多自定义路由。这些路由包括看起来像文件路径的映射(例如/path/to/xml_file.xml
),但是解析为应该在浏览器中显示的HTML文件。对于大多数文件,这可以正常工作。但是,对于XML文件(以及可能的其他mime类型),我从IIS 8 Express中明确指出
HTTP错误406.0 - 不可接受
无法显示资源,因为浏览器未接受文件扩展名。
请求被拒绝,因为它包含一个MIME类型的Accept标头,该标头不支持所请求的文件扩展名。
验证所请求的文件扩展名的MIME设置,以确保此MIME类型可以接受。
是否有任何web.config设置或其他技术绕过此验证,以便我不会在不重写路径逻辑的情况下得到此错误?我的Google搜索失败了。例如,我发现this IIS forum post链接了SO Answer,其中讨论了
将所有请求映射到ASP.NET并使用ASP.NET的StaticFileHandler为它们提供服务
然而,这篇文章没有解释如何做到这一点;它似乎也不适用。
修改(上面添加了错误页面图片)
作为另一个花絮,南希路线返回形式
的显式视图return View["view_name", myModel];
因此,应绕过内容协商。
答案 0 :(得分:3)
虽然本身不是修复或答案,但我目前的工作(对于任何可能感兴趣的人)都是调整路线以使用尾部斜杠。举个例子:
"/path/to/xml_file.xml" // Still returns a 406.0 error
"/path/to/xml_file.xml/" // Works properly (notice the trailing slash)
答案 1 :(得分: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问题......