我在.Net中创建了一个Web服务,因此服务文件的地址有一个很好的自动生成的解释,说明它是如何工作的。当我从它托管的机器上运行页面时,甚至还有一个表单,我可以用它来向服务提交测试值。但是在远程计算机上,它会隐藏表单并提供如上所示的消息。
这有什么意义吗?我已经看到其他网站称之为“更安全”,但任何人都可以轻松创建自己的表单,如果你问我,这只会令人讨厌。
答案 0 :(得分:155)
您可以通过修改web.config
来包含这些节点来解决此问题:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
这将允许您通过浏览器访问.asmx Web服务。然后,您可以直接在浏览器中调用Web服务,传递参数并查看结果。
答案 1 :(得分:14)
仅供参考我正在使用.NET 4.0并遇到同样的问题。
但是我用过......
<add name="HttpSoap12"/>
<add name="HttpSoap"/>
<add name="HttpGet"/>
<add name="HttpPost"/>
在那些相同的领域并且它起作用。但只有HttpGet
和HttpPost
它没有。
答案 2 :(得分:5)
答案 3 :(得分:4)
如果您要发布元数据并且它是一个公共/不安全的Web服务,那么您是对的,任何人都可以轻松生成一个简单的客户端来锤击您的Web服务。在这种情况下,只在本地计算机上生成Web客户端确实看起来很麻烦。
但是,如果您的服务是私有且安全的,那么这将是一个巨大的安全漏洞,任何拥有服务器和服务名称的人都可以使用经过身份验证的客户端来访问您的数据并造成各种伤害。
我认为仅在服务器本身上为ASMX Web服务生成UI的策略是尝试提供一些很好的工具,同时消除意外的安全漏洞。在任何情况下,WCF都已经废除了这一点,只有在元数据发布时才能生成客户端,并且他们需要实现正确的安全性才能访问服务。