2011-09-27 78 views
0

我寫了一個Web服務。我寫了一個網站。我希望網站BLL代碼可以調用Web服務。如何使用可配置的URL調用Web服務

我有一個配置表與此服務的URL。我將Web服務URL注入到調用代碼中。我應該使用C#中的哪個Web客戶端或套接字可以接收動態Web服務URL?

我想使用方法:

WebClient webClient = new WebClient(); 
UTF8Encoding response = new UTF8Encoding(); 
string originalStr = response.GetString(webClient.DownloadData(BLLConfig.Current); 

但也許有更優雅的方式?

我在運行時從數據庫表加載配置。

這裏是我嘗試過使用在Visual Studio中的Web引用:

using (var client = new GetTemplateParamSoapClient("GetTemplateParamSoap")) 
{ 
    TemplateParamsKeyValue[] responsArray = client.GetTemplatesParamsPerId(CtId, tempalteIds.ToArray()); 

    foreach (var pair in responsArray) 
    { 
     string value = FetchTemplateValue(pair.Key, pair.Value); 
     TemplateComponentsData.Add(pair.Key, value); 
    } 
} 
+0

當你說你從一個db表中加載配置時 - 你的意思只是web服務的不同URL(然後看到我的答案並跟隨鏈接)或不同WSDLs(這些Web服務中真正不同的功能)? – Yahia

+0

@Yahia,只是網址。同樣的WSDL –

回答

1

您可以添加Web服務的URL在Visual Studio中的Web引用,然後設置Service.URL財產的價值從配置

+0

不知道我知道如何去做,看到我的代碼在原始消息。 –

+1

它看起來像是作爲一個「服務引用」而不是一個Web引用添加的,要添加一個「Web引用」,請右鍵單擊服務引用並單擊添加新的服務引用,然後單擊高級按鈕,然後單擊「添加一個Web Reference「 – msmucker0527

+0

使用Web-Reference或Service-reference更好嗎? –

0

.NET有很多內置的消費Web服務的支持...在添加服務引用到您的項目後,它會生成必要的代碼...您可以使用原樣 - 如果您需要配置URL,則生成的客戶端類別具有URL屬性,您可以根據該屬性設置y ...出色的演練參見http://johnwsaunders3.wordpress.com/2009/05/17/how-to-consume-a-web-service/並參見SOAP xml client - using Visual Studio 2010 c# - how?

+0

我不'沒有client.Url屬性(請參閱上面的代碼) –