問題タブ [wcf-client]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1762 参照

wcf - wsdlで生成されたWCFプロキシクライアントがServiceContract、XmlSerializerFormat属性と一致しません



私は.net3.5フレームワークでWCFサービスを開発し、basicHttpBidingを使用してIIS 5.1 WindowsXPSP3でそれらをホストしています。

.net2.0フレームワークで開発されたサービスを消費するクライアント。このために、WSDL.EXEを使用してプロキシクライアントを生成しました。このツールは問題なくプロキシクラスを生成しますが、すべてのプロパティに追加される問題により、追加のプロパティ"[property] Specificed"が追加されますが、問題なく機能します。任意のプロパティに値を割り当てる場合は、"specificed=true"を指定するだけで済みます。

この余分なプロパティを削除するために、 ServiceContract属性とともにXmlSerializerFormat属性を追加しました。WSDL.EXEは、追加のプロパティなしでクラスを生成します。ただし、以前に含まれていた一部のクラスは除外されます。

除外されたクラスを生成するために設定する必要のあるプロパティはありますか?

注:すべてのコントラクトクラスはDataContractに帰属し、プロパティはDataMemeberに帰属します。


nRk

0 投票する
1 に答える
1596 参照

.net - WCFHttpからTcpプロキシ

内部ネットワーク上に、basicHttpBindingを使用してIIS6によってホストされている多数のWCFサービスがあります。動的プロキシ「CreateChannel()」メソッドを使用してこれらのサービスを使用する既存のアプリケーションがいくつかあります。

データ使用量を最小限に抑えることが重要なセルラー接続を使用して、ネットワークの外部で実行されるモバイルアプリケーションを構築しているため、httpバインディングの代わりにnetTcpBindingを使用しようとしています。

私のアイデアは、「WCFプロキシ」を構築することです。これは基本的に、外部に公開されているサーバー上で実行され、net.tcpバインディングを使用してリッスンし、要求を内部httpサービスに変換/転送するサービスです。

現在、コードは非常に単純で、次のようになっています...

これは現時点では非常に単純なコードであり、障害のあるチャネルなどは考慮されていませんが、我慢してください。

私が抱えている問題は、fooService(ここではwcfによって生成されたプロキシ)でGetType()を呼び出すと、プロキシのクラスではなくIFooServiceが返されることです。WCFは、新しいサービスホストを作成するときにそれを嫌い、「「この」タイプはインターフェイス自体にすることはできません」というエラーが表示されます。最後の行に。

これはただの恐ろしい考えですか?そうでない場合、それを実行するための最良の方法は何ですか?svcutilで生成されたプロキシの使用を強制されますか?

0 投票する
1 に答える
1959 参照

xml - WCF - ASMX - CommunicationException

ASMX Web サービスを使用する WCF クライアントがあります。例外処理を除いて、すべて正常に動作します。

(非契約上の) FaultException を取得する必要がある場所で、CommunicationException を取得します。

何が間違っている可能性がありますか?


関連データは次のとおりです。

SOAP 応答 (仕様によると思われる):

ex.Message (CommunicationException) :

ex.InnerException.Message (XmlException) :

0 投票する
2 に答える
3550 参照

wcf - MSDNの「セルフホスト」WCFの例をローカルホストからどのように移動しますか?

私はMSDNWCF-GettingStarted Tutorialを読みましたが、クライアントをドメイン内のあるマシンからドメイン内の別のマシンに移動しようとするまではうまくいきました。クライアントピースをネットワーク内の他のマシンに移動すると、SecurityNegotiationExceptionが発生しました。これが私がしたことです:

  1. サービス契約を定義しました(以下のコードブロック1を参照)。
  2. サービス契約を実装しました(以下のコードブロック2を参照)。
  3. サービスを実行するためのホストを作成しました(以下のコードブロック3を参照)。
  4. 実行svcutil.exeしてプロキシクラスと構成ファイルを生成しました(以下のコードブロック4を参照)。
  5. 4からの出力をクライアントプロジェクトにコピーしました。
  6. ホストに接続するクライアントを作成しました(以下のコードブロック5を参照)。

自分のマシン(SCOTT)でサービスとクライアントを実行すると、正常に動作します。自分のマシン(SCOTT)でサービスを実行し、仮想マシン(SCOTT-VM)でクライアントを実行すると、次のスタックトレースで失敗します。

(上記のコードブロックを使用して、スクロールして適切にフォーマットできるようにしました。引用符を使用しようとしましたが、読み取れませんでした。)

WCFのトレーニングを受けたユーザーにとって、このスタックトレースには明らかに明らかな問題がありますが、問題はわかりません。まず、この問題を解決してもらいたい。次に、優れたチュートリアルとトレーニング資料を知りたいです。 mark_sの回答にはいくつかのすばらしいリンクがあります。私はあなたのレビューのために 私のソースコードを圧縮しました。

ありがとう



コードブロック

コードブロック1:

コードブロック2:

コードブロック3:

コードブロック4:

コードブロック4からの出力:
app.config:

GeneratedProxy.vb:

コードブロック5:

0 投票する
3 に答える
5616 参照

wcf - Wcf ライブラリのデバッグ時に WcfSvcHost.exe が実行されない

名前空間の変更やディスク上の場所の変更など、最近いくつかのマイナーなリファクタリングを行った WCF ライブラリ プロジェクトがあります。app.config は、wcf サービスをホストするすべてのホストによって使用されると考えたため、app.config も削除しました。

その後、以前のように WcfSvcHost を使用してライブラリをデバッグできなくなったことに気付きました。Visual Studio から受け取るメッセージは次のとおりです。

'出力タイプがクラス ライブラリのプロジェクトを直接開始することはできません。

このプロジェクトをデバッグするには、ライブラリ プロジェクトを参照する実行可能プロジェクトをこのソリューションに追加します。実行可能ファイルをスタートアップ orject として設定します。

以前はこれを行う必要がなかったので、言われたとおりにしたくありません。WcfSvcHost を使用してデバッグ機能を復元する方法を教えてください。プロジェクト設定の [デバッグ] タブで、コマンド ライン引数は /client:"WcfTestClient.exe" に設定されたままです。

他に何を試すべきかわからない、ありがとう。

0 投票する
1 に答える
4480 参照

.net - WCF クライアントが同じコントラクトに対して複数のエンドポイントを指定するとどうなりますか?

それらすべてから消費しますか?例外をスローしますか?

0 投票する
2 に答える
1010 参照

wcf - WCF サーバー メソッド - DataSet を返すと、出力パラメーターが削除されます

集合知を探しています。これが状況です。これは Visual Studio 2008 を使用しています。

  1. 次のメソッドを公開する単純な WCF コントラクトがあります。

    /li>
  2. このメソッドは次のように実装されます。

    /li>
  3. クライアント側のプロキシは svcutil によって生成され、正しいように見えます。

問題:

someStuffクライアント側では常に null です。

所見:

  1. ビルド マシンでも同じ問題が発生します。
  2. DataSet の代わりに文字列を返すと、クライアント プロキシは out パラメータの適切な値を受け取ります。

    /li>
  3. クライアント プロキシを完全に削除して再生成しても効果はありません。

  4. トレース ログに示されているように、クライアントは確実に DataSet と「out」文字列の両方を受け取ります。

<ExecuteQueryResponse xmlns="http://tempuri.org/"> <ExecuteQueryResult> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"></xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"></diffgr:diffgram> </ExecuteQueryResult> <someStuff>abc</someStuff> </ExecuteQueryResponse>

  1. クライアント プロキシがコードを生成する方法は次のとおりです。

    /li>
  2. netTcpBinding を使用します

DataSet と out パラメータを返すために何か特別なことをする必要がありますか? 誰かが似たようなものに出くわしましたか?

ありがとう!!!!

0 投票する
3 に答える
1025 参照

c# - WCFを使用してサービスを利用し、バインディング構成に応じてさまざまなエラーを受信する

WCFでイントラネットWebサービスを利用しようとしています。VS2008のサービス参照の追加機能を使用してサービスへの参照を追加しました。そうすることで、提供したサービスにアクセスするためのネットワーククレデンシャルの入力を求められ、サービス参照が追加されました。

次に、サービスの呼び出しとともにクレデンシャルを渡さないため、失敗すると予想されるコードをいくつか作成しました。

このコードを使用すると、例外が発生
します。HTTP要求は、クライアント認証スキーム「ネゴシエート」で許可されていません。
サーバーから受信した認証ヘッダーは「Basicrealm="Kerberos"」でした。

これは、以下の2つのコード例のいずれかを使用したときに受け取るエラーと同じです。

また

私の腸は、セキュリティモードが正しく構成されていないことを教えてくれます。サーバーマネージャーによると、私がバインドしようとしているエンドポイントは、SSLを介して基本Httpクレデンシャルを探しています。WCF-BasicHttpトランスポートプロパティについて読んだ後、私はこの構成を使用する必要があると信じるようになりました。

残念ながら、私は同じエラーを受け取り続けました。

繰り返しになりますが、以前に古いAdd Web Referenceを使用して他のプロジェクトでこのサービスを使用したことがあるため、私の問題は私の側の構成の問題に関係していると確信しています。

0 投票する
0 に答える
161 参照

wcf - まだ開始されていない場合の WCF サービスのタイムアウト

私は自己ホストしている WCF サービスを持っています。InstanceContextMode が PerCall に設定されているときは、遅いことを除けば問題なく動作していました。(コンストラクターは非常に重いので、完全に理にかなっています) InstanceContextMode を Single に設定すると、サービスの起動後に正常に動作するようになりました。ただし、サービスがまだ起動中の場合、エンドポイントが見つからないというエラーが発生します。これは、PerCall モードで実行していたときには発生しませんでした。サービスが起動するまでリクエストをより長く待機させる方法はありますか? バインディングで OpenTimeout、ReceiveTimeout、SendTimeout を設定しようとしましたが、役に立ちませんでした。

これは私の呼び出しコードです:

PS。私は WCF 初心者ですが、皆さんはもうお気づきだと思います ;)