“testing表格仅适用于来自本地机器的请求。”

我在.Net中创build了一个Web服务,因此服务文件的地址有一个漂亮的自动生成的解释,说明它是如何工作的。 当我从机器上运行页面时,甚至有一个表单可以用来向服务提交testing值。 但是,在远程机器上,它隐藏了表单并给出了上面的消息。

这有什么意义吗? 我已经看到其他网站称之为“更安全”,但任何人都可以轻易地创build自己的表格,如果你问我的话,这只是一个麻烦。

如果您要发布元数据,而且这是一个公共/不安全的Web服务,那么您是正确的,任何人都可以轻松地生成一个简单的客户端来浏览您的Web服务。 在这种情况下,让Web客户端只在本地机器上生成似乎是一个滋扰。

但是,如果您的服务是私密的并且是安全的,那么这将是一个巨大的安全漏洞,为服务器和服务名称的任何人都提供经过身份validation的客户端,以便潜在地访问您的数据并进行各种损害。

我想象仅在服务器本身上生成用于ASMX Web服务的UI的策略是尝试提供一些漂亮的工具,同时消除意外的安全漏洞。 WCF在任何情况下都已经取消了这一点,只有元数据发布的时候才能生成客户端,并且为了访问服务,他们需要实现正确的安全。

您可以通过修改您的web.config来包含这些节点来解决此问题:

 <configuration> <system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices> </system.web> </configuration> 

这将允许您通过浏览器访问.asmx Web服务。 然后,您可以在浏览器中调用Web服务,传递参数并查看结果。

只是FYI我使用.NET 4.0,并有同样的问题。

不过我用…

 <add name="HttpSoap12"/> <add name="HttpSoap"/> <add name="HttpGet"/> <add name="HttpPost"/> 

在那些相同的领域,它的工作。 但只有HttpGetHttpPost没有。

在这里输入图像说明

HTTP GET和HTTP POST默认是禁用的