备忘:.net WebServices 禁用浏览器访问与禁用wsdl生成

很多情况下, 开发webservices 是需要本地浏览器调试,处于安全考虑生产环境不允许访问,也不允许访问wsdl文档。

首先:

禁用或启用浏览器访问,get、post方式

web.config文件内会有以下节点,注释掉get和post,就不可使用浏览器调试了,仅能使用soap进行正常访问。

复制代码
<system.web>
    <webServices>
      <protocols>
        <add name="HttpSoap" />
        <!--<add name="HttpPost" />
        <add name="HttpGet" />-->
        <add name="Documentation" />
      </protocols>
    </webServices>
复制代码

注释get与post后,再次访问 提示:”测试窗体只能用于来自本地计算机的请求“;但是还是能够看到wsdl文档,能够看到请求体与响应体,这些我们也不想暴露在外边。

 

需要在webServer节点内添加以下节点,来阻止wsdl生成。再次访问就会报500错误了,看了官方文档,应该是可以显示其他页面,不用报500错误,相对友好。(我们没那么多需求,就不继续研究了)

<system.web>   
<webServices>   
<wsdlHelpGenerator href="MyDocumentation.aspx"/>   
</webServices>   

本以为到此就结束了,突然发现接口也是500,也报错了,再次查询发现这个方法行不通,看了下文档没看明白。

再次查询解决方案得到了相对友好的解决方案:在<protocols> 节点下增加<remove name="Documentation"/> 并注释<add name="Documentation" />

复制代码
    <system.web>
    <webServices>
      <protocols>
        <add name="HttpSoap" />
 <!--<add name="HttpPost" />
        <add name="HttpGet" />
        <add name="Documentation" />-->
<remove name="Documentation"/>   
      </protocols>
    </webServices>
复制代码

再次访问asmx文档,浏览器响应404错误,至此基本解决了接口暴露问题。

404错误不太友好,配合站点加了一个自定义的错误页,相对友好一点。system.web节点下增加<customErrors>节点

<system.web>
<customErrors defaultRedirect="error.html" mode="RemoteOnly">
 </customErrors>
</system.web>

官方文档:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2008/ms242476(v=vs.90)

感谢搜索到的文章:https://developer.51cto.com/art/200908/142437.htm

 

posted @   zeran  阅读(2538)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示