簡體   English   中英

使用Visual Studio 2012從C#中的DLL消耗WSDL WebService

[英]Consuming a WSDL WebService from a DLL in C# using Visual Studio 2012

有沒有辦法使之成為可能?

我僅使用一種方法創建了一個簡單的WSDL Web服務,我已經對其進行了測試並且可以正常工作。

現在,我正在創建一個DLL,並添加了Web參考,但是當我嘗試在我的代碼中使用它時,出現以下錯誤:

當前上下文中不存在“ Web服務名稱”

其他奇怪的事情似乎沒有加載Web服務文件,除了Web服務文件夾(公告服務),我看不到其他任何東西

在此處輸入圖片說明

檢查該文件夾,我只有3個文件: .wsdl文件, reference.cs文件和.map文件

我看不到其他.xsd.disco文件。

我是在做錯什么,還是將Web服務添加到dll而不是普通的ASP.NET應用程序?

謝謝

僅供參考,就像我一樣,通過Google查找此問題的任何人都可以參考此頁面: https : //www.sitepoint.com/net-web-services-5-steps/

您可以跳過第1部分,因為您無需創建Web服務。 (他們建立了一個接受字符串並將其插入SQL查詢並返回DataTable的方法-一種非常常見的Web服務方法)

第2部分:創建代理類

  1. ?WSDL附加到Web服務URL,即http://localhost/suppliers.asmx ?WSDL
  2. 打開記事本。 將步驟1中的URL放在最后:

    wsdl.exe /l:CS /n:WService /out:GetSuppliers.cs http://localhost/suppliers.asmx?WSDL

將文件另存為makeWS.bat。 如果運行它,它將使用wsdl實用程序來創建代理類(.cs)文件。 現在暫緩。

第3部分:構建我們的DLL

  1. 添加以下內容以將csc實用程序用於批處理文件中的一行以創建DLL:

    csc /t:library /out:GetSuppliers.dll GetSuppliers.cs /reference:System.dll,System.Data.dll,System.Web.dll, System.Web.Services.dll,System.XML.dll /optimize

    現在保存並運行makeWS.bat。

第4部分:將DLL合並到使用Web服務的項目中

  1. 將服務引用添加到Web服務的URL。
  2. 將DLL添加到項目的bin文件夾中。 在您的項目中將通用參考(NOT服務參考)添加到該文件。
  3. 在將調用Web服務的類的頂部添加“ using WService;”聲明,因為這是wsdl實用程序與/n:WService一起添加的名稱空間(您可以根據需要更改此名稱,但必須這樣做始終)。

  4. 在類中添加如下代碼: WService mySvc = new WService();

  5. 您應該能夠在Web服務內的WebMethod上進行調用: DataTable dt = mySvc.GetDataFromWebMethodX();

    其中GetDataFromWebMethodX()是您嘗試使用的WebMethod。

第5部分:您可以查看一些有用的信息,這些信息可以使您異步調用Web服務(無需等待響應就可以繼續執行代碼,以后再執行回調函數),但是通常並不需要。

根據問題注釋,似乎#4存在一個問題,該問題可以獨立於創建DLL進行,也可以在創建DLL之前進行。 如果您在使用“服務引用”引用Web服務URL時遇到問題,則它必須是可發現的,並且其名稱不得與相同環境/域中的其他名稱沖突。 正如問題的作者所發現的,它的配置中不能定義與同一域中的另一個站點/ Web服務沖突的端點(地址,端口)。 似乎這個問題導致的答案更多是關於如何設置Web服務,而不是關於如何執行連接到Web服務的過程,但我認為我會發布這兩個方面的信息,因為這兩個方面對於使用Web服務都非常重要。 Web服務放入一個項目並使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM