zoukankan      html  css  js  c++  java
  • 备忘:.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

    仅供参考,内容中会引用部分博友的文章。(侵删)
  • 相关阅读:
    【日常学习】codevs1287 矩阵乘法题解
    数据库系统概论-[04]索引
    oracle-sql分析练习
    大水题(容斥原理)
    大水题(容斥原理)
    hdu 2952 Counting Sheep
    hdu 2952 Counting Sheep
    HDU 2612 Find a way
    HDU 2612 Find a way
    hdu 2181 哈密顿绕行世界问题
  • 原文地址:https://www.cnblogs.com/zeran/p/13994304.html
Copyright © 2011-2022 走看看