重要な免責事項。この質問は WSDLへのプロキシを生成する 。それは VS Codeで参照を作成する でもありません。
Visual Studio Code(最新アップデート、v1.8、11月16日)を使用しており、WSDLおよびXSDファイルを使用して記述された外部Webサービスへの呼び出しを作成する必要があります。前述のエディターを使用してこれを実行したいので、できればすべてのプロキシを作成して自分自身を包む必要はありません。
これは可能ですか、それとも運が悪かったのですか?
VSコードで実行できない場合、最も簡単な代替手段は何ですか? VS15を使用してクラスと呼び出しを生成し、ファイルをコピーすることについて話しているのですか、それとも私がよく知らない巧妙な回避策がありますか?
ゼロから構築し、Visual Studioがそれをどのように行うかを気にしない場合は、いくつかの基本 このソリューションからここでは 、および同じページの承認されたソリューションで参照される他のリンクから開始できます。
参考までに、以下のVisual Studioの参照追加メソッドによって生成されたファイルの一部は、サブフォルダーに保存されますWeb参照/ Example(ここで、Exampleは、参照へのアクセスに使用される変数の名前です)、以下が含まれます。
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://example.com/api/index.php?wsdl" filename="index.wsdl" />
</Results>
</DiscoveryClientResultsFile>
このファイルは完全な未加工のwsdlソースファイルです(適切にフォーマットされたxml)。
このファイルには、すべてのメソッドとプロパティを初期化するコードが含まれており、System.Web.Services.Protocols.SoapHttpClientProtocol
を拡張する基本クラスです。
クラスに割り当てられたプロパティ(古いVB.NETプロジェクトから削除しています:次のようになります:
<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.6.1586.0"), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Web.Services.WebServiceBindingAttribute(Name:="ExampleAPIBinding", [Namespace]:="urn:ExampleAPI"), _
System.Xml.Serialization.SoapIncludeAttribute(GetType(MyCustomType1)), _
System.Xml.Serialization.SoapIncludeAttribute(GetType(MyCustomType2)), _
Partial Public Class ExampleAPI
Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
End Class
.datasource(タイプごとに1つのファイル)
サンプルコード
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="MyMethodName" Version="1.0" xmlns="urn:schemas-Microsoft-com:xml-msdatasource">
<TypeInfo>ExampleAPI.SOAP.ClientMerchant, Web References.SOAP.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
Visual Studio内で、次の操作を実行できます(そして、結果をVSCodeプロジェクトにコピーします)
プロジェクトエクスプローラーでプロジェクトを右クリックし、[追加]> [サービス参照]を選択します。
この画面で[詳細]をクリック
この画面で[Web参照の追加]をクリックします
WSDLの場所への完全なURLを入力し、Enterキーを押します。
成功した場合(適切にフォーマットされたWSDLが見つかった場合)、[参照の追加]ボタンが有効になります。それをクリックすると、プロジェクトへの参照が追加されます。
Donet-svcutilを使用することもできます
例
dotnet-svcutil https://svn.Apache.org/repos/asf/airavata/sandbox/xbaya-web/test/Calculator.wsdl
これは直接的なアプローチとして他の人を助けるかもしれません。 SDKに含まれているsvutil.exeツールを使用して、必要なプロキシクライアントを生成できます。ファイル用のフォルダーを作成する場合は、コマンドラインからそのフォルダーに移動し、ツールを実行すると、プロキシファイルと独自の構成で必要な構成要素が生成されます。
注:プロキシ出力言語を含む多くのオプションを設定できます。デフォルトはc#です。
使用しようとしているsvc WSをターゲットにしている場合、例: http://abc.dfe.com/myWebService.svc は次のようになります。
このサービスをテストするには、クライアントを作成し、それを使用してサービスを呼び出す必要があります。これは、次の構文でコマンドラインからsvcutil.exeツールを使用して実行できます。
svcutil.exe http://abc.dfe.com/myWebService.svc?wsdl
これにより、構成ファイルと、クライアントクラスを含むコードファイルが生成されます。 2つのファイルをクライアントアプリケーションに追加し、生成されたクライアントクラスを使用してサービスを呼び出します。
OPではないにしても、これが同じクエリを持つ誰かに役立つことを願っています。
Julioのコメントに続いて、.NET Coreで必要なすべての手順を次に示します(OSXの手順)。
Dotnet-svcutilをインストールします。
dotnet tool install --global dotnet-svcutil
.bash_profileにツールパスを追加します。
nano ~/.bash_profile
この行を追加します。
export PATH=$PATH:$HOME/.dotnet/tools
プロファイルをリロードします。
. ~/.bash_profile
アプリまたはライブラリのパスに移動して、コマンドを実行します。サービス参照を有効にするパスにいる必要があります。例えば:
cd MY-PROJECT-FOLDER/Library
dotnet-svcutil PATH-TO-MY-WSDL/my-wsdl.xml
作成したファイルを.csproj
に追加します。デフォルトでは、クリエイティブにServiceReference/Reference.cs
という名前が付けられます。ファイルの行は次のようになります。
<Content Include="ServiceReference\Reference.cs" />