备忘:.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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示