我有一个数据库,其中某些字符串包含.Master作为其字符串的一部分。我有一个API可以访问字符串(我必须通过字符串而不是另一列来访问它们),但是出现错误:
HTTP错误404.7-找不到 请求过滤模块配置为拒绝文件扩展名。
我知道问题是由于某个地方的配置引起的,但是我不确定该设置在哪里。我查看了有关404.7错误的其他问题,但找不到适合我的解决方案。如何在查询字符串的末尾允许.Master?
答案 0 :(得分:0)
当IIS收到请求时,它会根据路径和扩展名寻找一个处理程序以响应该请求。对于没有扩展名的URL,TransferRequestHandler处理程序将调用ASP.NET Web API。
因此,您需要更改IIS配置,以使此处理程序以任何扩展名响应请求。添加在web.config中:
<configuration>
<system.webServer>
<handlers>
<add name="MyWebAPIHandler" path="api/*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
</configuration>
这将添加一个新的处理程序,以响应每个扩展名对路径/ api的请求。这使staticFile处理程序可以继续处理其他路径上的请求,因此仍可以访问脚本或样式之类的静态文件。
答案 1 :(得分:0)
我最终弄清楚的是,您可以进入.vs / config / applicationhost.config。
在其中之后,您会找到
<requestFiltering>
<fileExtensions allowUnlisted="true" applyToWebDAV="true">
<add fileExtension=".ascx" allowed="false" />
<add fileExtension=".master" allowed="true" />
</fileExtensions>
</requestFiltering>