2017-02-28 29 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服务的核心客户端应用程序

相关问题