2017-02-28 30 views
1

我在.NetCore控制檯應用程序中添加asmx服務時遇到問題。我正在使用WCF連接服務擴展,因爲添加Web引用不可用。因此,我遵循了以下鏈接中建議的相同步驟 https://blogs.msdn.microsoft.com/webdev/2016/06/26/wcf-connected-service-for-net-core-1-0-0-and-asp-net-core-1-0-0-is-now-available/如何在Asp.net核心Web應用程序中使用基於證書的Web服務(asmx)?

完成所有步驟後,它提供了自動生成的引用類,其中包含所有方法作爲異步方法。我的asmx服務需要每種方法的用戶名和密碼認證,並且我們通過認證作爲任何方法的第一個參數。

例如,使用Web引用我的方法看起來像的GetData(憑證的憑證),但在這裏自動生成的類節目,如 GetDataAsync這個方法(),所以我用下面的提代碼中調用我的web服務方法之前憑據傳遞

client.ClientCredentials.UserName.UserName =「myusername」; client.ClientCredentials.UserName.Password =「mypassword」;

它給了我沒有授權的錯誤,在放置斷點後,我發現證書沒有得到asmx服務。

請提出一些解決方案。

+0

你找到了解決方案嗎? – hugoterelle

回答

2

前一種方法我把:
我遇到了類似的問題。我有一個MVC核心Web應用程序(以.NET Framework 4.6.1爲目標),並且無法按照以前(非核心)應用程序中的方式添加Web引用。我無法使連接服務添加對asmx的引用並允許傳遞憑證。

爲了解決這個問題,我創建了一個額外的項目(一個也針對.NET Framework 4.6.1的類項目)。從那裏我能夠以過去的方式添加Web引用。在這個項目中,我創建了一個具有可公開訪問的方法的類,該方法調用asmx服務。

然後,在我的MVC Core項目中,我設置了對這個額外項目的引用,並且能夠在另一個項目上調用公共方法。

最新,最好的辦法我已經找到:
我完全更新VS 2017年,以及將這個網站以獲取最新的WCF連接服務擴展(https://marketplace.visualstudio.com/items?itemName=WCFCORETEAM.VisualStudioWCFConnectedService)。

AuthorizationSoapHeader很容易訪問和設置。

MySoapClient.EndpointConfiguration endpoint = new MySoapClient.EndpointConfiguration(); 
MySoapClient myService = new MySoapClient(endpoint, myURL);    
AuthorizationSoapHeader MyAuthHeader = new AuthorizationSoapHeader(); 

MyAuthHeader.AppName = FDSServiceAppName; 
MyAuthHeader.AppID = Guid.Parse(MyAppID); 

Entry[] entries = MyService.GetUsers().Result; 
0

我面臨同樣的問題,我解決它擁有到github issues

在Reference.cs替代

System.ServiceModel.BasicHttpBinding result = new System.ServiceModel.BasicHttpBinding() 

System.ServiceModel.BasicHttpBinding result = new System.ServiceModel.BasicHttpBinding(System.ServiceModel.BasicHttpSecurityMode.TransportCredentialOnly); 
      result.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Basic; 

這確實在.NET工作用於肥皂web服務的核心客戶端應用程序

相關問題