2009-06-22 47 views
50

我在.Net中創建了一個Web服務,因此服務文件的地址有一個漂亮的自動生成的關於它如何工作的解釋。當我從機器上運行該頁面時,即使它有一個表單,我可以使用它向服務提交測試值。但是,在遠程機器上,它隱藏了表單並給出了上面所示的消息。「測試表格僅適用於來自本地機器的請求。」

這有什麼意義嗎?我見過其他網站稱之爲「更安全」,但任何人都可以輕鬆創建他們自己的表格,如果你問我,那麼這只是一個麻煩。

+2

你有問題嗎?您可能還想說出您正在使用的.NET版本,或者您是使用ASMX服務還是使用WCF。 – 2009-06-22 16:02:41

+0

如何調用webService? 當ServerSide發生任何更改時,我需要執行該事件。我應該把程序放在服務器主機上嗎? – 2011-10-04 17:30:35

回答

3

如果您要發佈元數據並且它是一個公共/不安全的Web服務,那麼您是對的,任何人都可以輕鬆地生成一個簡單的客戶端來瀏覽您的Web服務。在這種情況下,讓Web客戶端只在本地機器上生成似乎是一個麻煩。

但是,如果您的服務是私密的且安全的,那麼這將是一個巨大的安全漏洞,爲服務器和服務名稱的任何人提供經過身份驗證的客戶端,以潛在地訪問您的數據並進行各種傷害。

我想象一下,在服務器本身上生成ASMX Web服務用戶界面的策略是嘗試提供一些漂亮的工具,同時消除意外的安全漏洞。 WCF在任何情況下都已經取消了這一點,只有在元數據發佈後才能生成客戶端,並且他們需要實現正確的安全性才能訪問服務。

+0

那麼我該如何上班? – Si8 2017-01-19 21:00:17

+2

下面的答案(120 + upvotes之一)告訴你如何讓它工作 - 祝你好運! – 2017-01-19 21:48:20

+0

我問過這個問題:http://stackoverflow.com/questions/41752213/why-is-asmx-giving-an-error-with-pulling-data-from-client-script。你能幫忙嗎? – Si8 2017-01-19 21:50:51

138

可以解決此問題通過修改web.config包括這些節點:

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

這將允許您通過瀏覽器訪問的.asmx Web服務。然後,您可以在瀏覽器中正確調用Web服務,傳遞參數並查看結果。

+8

+1,因爲我的應用程序處於安全的環境中,對於質量保證這是完全需要的。謝謝。 – BryanGrimes 2010-03-12 18:36:57

+7

+1它解決了我的問題..非常有幫助:) – 2012-10-17 11:14:14

+0

也幫助我,但還有其他問題,因爲它會將我重定向到指定端口的頁面。我如何從地址字符串中刪除端口。 – 2012-11-14 13:22:24

14

只是FYI我使用.NET 4.0,並有這個相同的問題。

但是我用...

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

在上述領域和它的工作。但只有HttpGetHttpPost它沒有。

相關問題