找不到Asp.Net Core Api 404

时间:2018-08-09 18:04:15

标签: asp.net-web-api

我有一个数据库,其中某些字符串包含.Master作为其字符串的一部分。我有一个API可以访问字符串(我必须通过字符串而不是另一列来访问它们),但是出现错误:

HTTP错误404.7-找不到 请求过滤模块配置为拒绝文件扩展名。

我知道问题是由于某个地方的配置引起的,但是我不确定该设置在哪里。我查看了有关404.7错误的其他问题,但找不到适合我的解决方案。如何在查询字符串的末尾允许.Master?

2 个答案:

答案 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。

在其中之后,您会找到 xml标记。那里有一个允许的扩展列表。您只需找到要允许的扩展并将其属性设置为true。

<requestFiltering>
    <fileExtensions allowUnlisted="true" applyToWebDAV="true">
        <add fileExtension=".ascx" allowed="false" />
        <add fileExtension=".master" allowed="true" />
    </fileExtensions>
</requestFiltering>