我正在开发一个网站,该网站在网站的文件夹中公开一组网络服务:
services
--- servicea.asmx
--- serviceb.asmx
这些服务的设置允许与我们控制的其他站点进行一些互操作,并且这些服务都驻留在同一台服务器上。
该站点使用基于asp.net表单的身份验证,但services文件夹已被免除,并且每个服务在调用方法时执行自己的身份验证,并检查他是否只从本地地址访问,这样可以正常工作
但是,如果我从外部地址访问services / servicea.asmx,我仍然可以看到可用方法的列表。我无法从外部地址有效地调用任何这些方法,这应该是,但我不喜欢暴露我们这样的内部API。有什么方法可以阻止asmx文件在框外访问时使用方法列表进行响应吗?
答案 0 :(得分:1)
您应该能够将以下内容添加到您的web.config中:
<system.web.services>
<protocols>
<remove name="Documentation"/>
</protocols>
</system.web.services>
这应该隐藏服务描述页面。
有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/b2c0ew36%28v=vs.100%29.aspx - 请注意,这也会阻止客户端生成WSDL代理类,因此它可能成为易于实现的真正障碍。
隐藏方法名称不能代替安全性,但您可能需要考虑是否需要这样做。