【问题标题】:Can I disable a asp.net web api route in web.config?我可以在 web.config 中禁用 asp.net web api 路由吗?
【发布时间】:2014-03-13 05:42:58
【问题描述】:

我需要在 asp.net webapi 应用程序中临时禁用路由,但我无法编译和再次部署。

我可以在 web.config 中禁用一个 asp.net web api 路由吗?

【问题讨论】:

    标签: asp.net iis asp.net-web-api


    【解决方案1】:

    我认为您不能在 web.config 中禁用特定路由。通常如果你想禁用一个路由,你可以使用IgnoreRoute,或者在路由存在的地方删除WebApiConfig.csGlobal.asax文件中的路由。

    既然你只想在web.config中做,不做compile和另一个deploy,我只能考虑两种方法。

    1) 使用 URL 重写

    <rewrite>
      <rules>
        <clear />
        <rule name="diableRoute" stopProcessing="true">
          <match url="api/YourWebApiController" />
          <action type="Redirect" url="Error/NotFound" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>
    

    此结果将返回 404 错误页面。

    2) 设置授权规则

     <location path="api/YourWebApiController">
        <system.web>
          <authorization>
            <deny users="*"/>
          </authorization>
        </system.web>
      </location>
    

    这个结果会返回登录页面,因为访问web api路由被拒绝了。

    您可以根据需要自定义任何一种。

    【讨论】:

    • 感谢您的回答。另一种解决方案是在 IIS 中配置请求过滤规则。
    • 是否可以使用 web.config 中的 方法仅启用某些路径并拒绝所有其余的 api?
    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2015-09-08
    相关资源
    最近更新 更多