新しいプロジェクトをコア技術 asp.net 用いて開発する場合、旧プロジェクトは.NET Framework 4で開発されたWCFサービスである場合があります。再構築コストが高すぎるため、WCFサービスインターフェースを呼び出すためにコア asp.net 使う必要があります。
まず、新しい2つのプロジェクトを作成します。
ASP.NET Core 3.1 プロジェクト: dotnet-core-call-wcf .NET Framework 4 project (WCF service application): schools-wcf-service
Visual Studio 2019がWCFサービスを作成したいのですが、テンプレートが見つからず、解決策は以下の通りです:
Visual Studio Installerを開くには「Install more tools and feature」を選択してください。 「個別コンポーネント」タブを選択し、「開発活動」までスクロールし、「Windows Communication Foundation」を選択し、「Modify」をクリックしてください。
WCFは以下の2つのインターフェースを作成します。
インターフェース実装コードは以下の通りです:
サービス契約は関連するサービス操作の集合であり、インターフェースにServiceContractAttributeを適用すると、サービス契約属性を付与します。 しかし、そのようなタイプの場合、その慣用句は自動的に契約上のサービス操作になるわけではなく、OperationContractAttributeの機能が適用された場合にのみ対応するメソッドメンバーがサービスコールでアクセス可能なサービス操作になります。
wcfプロジェクトを開始すると、自動的にWcfTestClientを実行し、下図のように呼び出そうとします。
ASP.NET コアプロジェクトを使ってWCFサービスを呼びかけましょう
「Connected Services」を右クリックし、接続を追加したいサービスを選択し、以下の画像のようにWCFサービスを選択してください:
サービス住所記入:http://localhost:3705/Service1.svc
起こりうる誤り:
WCFのサービスアドレスを書き込むことは不可能なので、appsettings.jsonファイルに以下のコードを追加してください。
Startup.csファイルを編集し、以下のコードでWCFサービスを登録します:
HomeControllerコントローラのWCFサービスを呼び出し、最初のコンストラクタ注入を行い、コードは以下の通りです:
WCFサービスへの電話:
asp.net Coreのウェブサイトを運営すると、その効果は以下の通りです:
WCFサービスを修正して、インターフェースが3分後に結果を返すようにし、その後コアを asp.net 再起動してWCFサービスを呼び出すように試みますが、エラーは以下の通りです。
AggregateException: One or more errors occurred. (The request channel timed out attempting to send after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.) この時点で、デフォルトのタイムアウトを変更し、BasicHttpBindingのバインディングをカスタマイズし、Startup.csファイルを次の通りに再編集する必要があります。
ソースコードダウンロード:
観光客の皆さん、この投稿の隠された内容を見たい方は、どうぞ 答える
|