2012-02-26 101 views
1

我有簽名Web服務:如何將可選參數發送到c#中的「webservice」?

[WebMethod(EnableSession = true)] 
public Box FetchBox(string boxId, string p1, string p2, string p3) 

我調用這個Web服務的jQuery的AJAX:

$.ajax({ 
    url: "/WS/Ajaxify.asmx/FetchBox", 
    data: "{ 'boxId': '" + boxId + "' }", 
    dataType: "json", 
    type: "POST", 
    contentType: "application/json; charset=utf-8" 
}); 

我想打電話給FetchBox一次只與P1,後來與P2但不p1等。

在許多情況下,我需要調用與任何p1或p2或p3或... 參數的FetchBox方法。我不想發送所有參數,因爲系統是基於插件的,插件不知道其他參數。

c#4中的可選參數不適用於Web服務。

也params string []參數不適合在這裏,因爲我需要知道參數名稱。

+0

爲什麼你需要知道參數名稱? p1,p2或p3是什麼意思? – BrokenGlass 2012-02-26 04:51:52

+0

我需要知道參數名稱及其值才能做出決定。 – ehsan 2012-02-26 04:53:15

+0

你還沒有回答這個問題 - 背後有什麼邏輯? – BrokenGlass 2012-02-26 04:54:32

回答

3

您無法將可選參數發送到SOAP Web服務。 SOAP協議沒有可選參數的概念。

另外,您根本不應該使用ASMX服務。這是一項不應該用於新開發的傳統技術。應該使用WCF來代替。

相關問題