2017-02-28 1 views
1

.NetCore Consoleアプリケーションでasmxサービスを追加する際に問題に直面しています。 Web参照の追加が利用できないため、WCF Connected Service拡張機能を使用しています。そこで、私は次のリンクで提案された同じステップを踏んだ。 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サービスでは、メソッドごとにユーザー名とパスワードの認証が必要となり、どのメソッドの第1引数としても資格情報を渡しました。ウェブは私の方法は、GetDataの(資格資格)のように見えますが、ここでは、自動生成されたクラスは GetDataAsync(のように、この方法を示し参照)ので、私は自分のWebサービスメソッドを呼び出す前に資格情報を渡すために、以下の言及コードを使用使用して例えば

client.ClientCredentials.UserName.UserName = "myusername"; client.ClientCredentials.UserName.Password = "mypassword";

私には許可されていないエラーが表示されています。ブレークポイントを設定した後、資格情報がasmxサービスで取得されていないことがわかりました。

解決策をご提案ください。

+0

あなたは解決策を見つけましたか? – hugoterelle

答えて

2

以前のアプローチI Took:
私は同様の問題に遭遇しました。私はMVCコアWebアプリケーション(.NET Framework 4.6.1を対象としています)を持っていて、以前の(非コア)アプリケーション内で使用できるようにWeb参照を追加できませんでした。私は、Connected Servicesにasmxへの参照を追加し、資格証明の受け渡しを許可することができませんでした。

これを回避するために、追加のプロジェクト(.NET Framework 4.6.1をターゲットとするクラスプロジェクト)を作成しました。そこから私は以前のようにWeb参照を追加することができました。このプロジェクトでは、asmxサービスを呼び出す公的にアクセス可能なメソッドを持つクラスを作成しました。

次に、私のMVCコアプロジェクト内で、この追加のプロジェクトへの参照を設定し、他のプロジェクトのパブリックメソッドを呼び出すことができます。

最新のと私が見つけた最善のアプローチ:
私は完全には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ではこれは本当に.NETで働いていた

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

ため

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

を代用石鹸ウェブサービスのためのコアクライアントアプリケーション

関連する問題