ASP.net - Web服务 - 只能通过localhost访问

时间:2012-03-16 09:55:46

标签: asp.net web-services asmx

我正在开发一个网站,该网站在网站的文件夹中公开一组网络服务:

services
--- servicea.asmx
--- serviceb.asmx

这些服务的设置允许与我们控制的其他站点进行一些互操作,并且这些服务都驻留在同一台服务器上。

该站点使用基于asp.net表单的身份验证,但services文件夹已被免除,并且每个服务在调用方法时执行自己的身份验证,并检查他是否只从本地地址访问,这样可以正常工作

但是,如果我从外部地址访问services / servicea.asmx,我仍然可以看到可用方法的列表。我无法从外部地址有效地调用任何这些方法,这应该是,但我不喜欢暴露我们这样的内部API。有什么方法可以阻止asmx文件在框外访问时使用方法列表进行响应吗?

1 个答案:

答案 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代理类,因此它可能成为易于实现的真正障碍。

隐藏方法名称不能代替安全性,但您可能需要考虑是否需要这样做。