2010-01-05 38 views
18

我有一個只需要一個int參數的asmx服務。我可以打開該服務的URL並查看服務描述屏幕。從這裏我可以將查詢參數輸入到表單中並調用Web服務。可能通過url查詢字符串通過參數調用ASMX服務?

有什麼辦法直接從URL /查詢字符串調用Web服務嗎?

這並不工作:

http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1

任何想法?由於某些部署問題,我真的希望能夠從標準鏈接執行此操作。我將不得不在正常的aspx頁面中包裝請求嗎?

回答

39

可以裝飾你的方法,以允許HTTP GET請求,這應該反過來做你要找什麼,像這樣:

[WebMethod] 
[ScriptMethod(UseHttpGet=true)] 
public string MyNiftyMethod(int myint) 
{ 
    // ... code here 
} 

而且編輯web.config:

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

然後你就可以調用此方法像這樣:

http://mysite.com/Service.asmx/MyNiftyMethod?myint=12345

編輯:請注意,執行GET請求的這種方法確實帶有一些安全風險。按照MSDN documentation for UseHttpGet

設置UseHttpGet屬性 真正,如果你是敏感數據或交易工作 可能帶來的 您的應用程序存在安全隱患。 在GET請求中,消息是 由瀏覽器編碼爲URL ,因此更容易被篡改爲 目標。

+0

非常好,我會給你一個鏡頭。 – Alex 2010-01-05 15:30:07

+0

好吧,這沒有工作,得到完全相同的錯誤。 – Alex 2010-01-05 18:12:25

+0

不工作... – 2010-03-23 18:10:06

9

ASMX Web服務使用SOAP。 SOAP請求僅使用POST來調用方法。您需要在您的aspx頁面中生成一個代理客戶端來調用Web服務。如果您確實需要使用GET動詞來調用Web服務,則可能需要使用其他方法,例如WCF REST

+0

這很簡單,適用於我的情況。 – Alex 2010-01-07 21:33:28

相關問題