問題タブ [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.
wcf - WCFサービス参照を作成する正しい方法は?
セルフホストのTCPベースのWCFサービスがあります。現在、そのサービスを使用するプロジェクトを構築していますが、プロジェクトにサービス参照を追加する方法は少なくとも2つあるようで、どちらも大きく異なるプロキシを生成します。最初にプロジェクトメニューから「サービス参照の追加」を使用しましたが、これによりかなりの数のファイルが生成され、コア.NetタイプのXMLスキーマも生成されました。次に、2つのファイル(1つはプロキシ、もう1つはサービス参照とバインディングパラメーターを保持する構成ファイル)のみを生成するSvcUtilを試しましたが、これははるかに優れていますが...
どちらの場合も、サービスとそれが使用するすべてのタイプを含むアセンブリへの参照を提供したにもかかわらず、VSツールはタイプ定義を再現しているようです。たとえば、私のサービスメソッドのいくつかは、エンティティクラスのジェネリックコレクションを返します。すべてのエンティティクラスは、消費プロジェクトから直接参照したアセンブリ内で定義されているのに、なぜそれらのタイプを再定義するのですか?
エンティティタイプとそれらが従うベストプラクティスを返すWCFサービスの利用について、何らかのアドバイスを提供していただければ幸いです。
wcf - WCF エラー 109: パイプからの読み取り中にエラーが発生しました。パイプはクライアント側で閉じられています
クライアント アプリで次のエラーが発生します
私の OperationContract の特定の実装を使用する場合。以下は要点を切り詰めたサンプルです。私のDataContractsは次のようになります:
そして、私の ServiceContract は次のようになります。
[ServiceContract] パブリック インターフェイス IAuthentication {
}
このサービスを次のクラスのように実装します。
注: どちらのメソッドも同じ型を返します。1 つだけが Person をインスタンス化してそれを返しますが、2 つ目のメソッドは Employee をインスタンス化しますが、これも Person です。
クライアントから呼び出すと、サーバーではエラーが発生しませんが、クライアント側では次のようになります。
出力は次のとおりです。
Authenticate サービスに接続しています... GetDeveloper OK : Asghar Panahy パイプからの読み取り中にエラーが発生しました: De pipe is beëindigd. (109、0x6d)。
誰でもこれについて私を助けてもらえますか? アスガル
wcf - WCF-次の検索基準を使用してx.509証明書を見つけることができません
さて、私はこの問題に関連するいくつかの質問を見てきました、そして私はそれらに提示された多くのアイデアを試しましたが成功しませんでした。これが私の状況です:
会社のイントラネットを介してWebサービスを利用しています。svcutil.exeを使用して、WCFのクライアントクラスを生成しました。サービスの開発中に問題なくWebサービス呼び出しを実行でき、認証資格情報を必要としなかったため、コードが機能することがわかりました。当時、コードはSSLを介して実行されていました。必要な証明書を信頼されたルート証明機関ストアにインポートしましたが、すべて問題ありませんでした。
ステージ環境に移行したばかりで、接続するために資格情報が必要になるようにサービスがアップグレードされました。接続を新しいエンドポイントに切り替え、認証するコードを追加しました。wcfを使用するのはこれが初めてですので、明らかな間違いがあればご容赦ください。私の問題は、認証のためにサービスに渡すコードを介して証明書を見つけることができないことです。私はこれを私が見つけたいくつかのオンラインコード例に基づいています。
svcutilによって生成された構成の例を次に示します。
そして、これが私が接続を試みるために使用しているコードです。証明書を見つけようとするとすぐに例外がスローされます。
私はいくつかの異なるX509FindTypesを試しましたが、それらを証明書の値と一致させましたが、成功しませんでした。私のコードに何か問題がありますか?渡した値を検証するために証明書ストアにクエリを実行する別の方法はありますか?
Visual Studioを実行している開発マシンには、証明書がインポートされています。
c# - .net WCFクライアントにbasicHttpBindingでNTLMを使用させる方法は?
現在、セキュリティノードを次のように定義しています。
次のエラーが表示されます。
HTTP 要求は、クライアント認証スキーム「ネゴシエート」では許可されていません。サーバーから受信した認証ヘッダーは「NTLM」でした。
c# - 「よりスマートな」(つまり、型付きのチェック済み/読み取り専用プロパティ) クライアント DataContract オブジェクトを作成するにはどうすればよいですか?
私は、クライアント/サーバー メッセージング システムに WCF を使用することの一部に固執しており、助けていただければ幸いです。
サーバーには、プロパティの 1 つが MessageBody DataContract の型指定されたコレクションを指す Message DataContract オブジェクトがあります。クラスの簡素化されたバージョンは次のようになります。
App.Client.dll から、ServiceContract と DataContract の WCF プロキシを作成します (ところで、上記で定義した DataContract を配置できる共通の 'App.Contracts.dll' への参照はありません)。クライアントからのデータ転送用サーバーへ、これですべての設定が完了しました...
しかし、クライアント側のユーザー機能側から見ると、まだまだ道はあります。
ユーザーが上記のプロパティを確実に操作できるようにしたいのですが、クライアント オブジェクトをインスタンス化するときに型チェックが行われます。たとえば、ユーザーが操作する実際のクラスが次のようになることを望みます。
これを解決するために使用しようとした1つの方向は次のとおりです。
DataContract の名前を Message から CommMessage に変更すると、POCO/WCF オブジェクトをよりスマートなオブジェクトでラップできますが、これはコレクション プロパティを除くほとんどのプロパティで機能します。
あらゆる提案をありがとう!
wcf - 実行時にURLを介してWCF Webサービスを使用する方法は?
URL を介して、サービスで公開されているすべてのメソッドにアクセスしたいと考えています。URLが次のようになるとします。
メソッドにアクセスするにはどうすればよいですか:
- ServiceReference があるとします
- サービス参照がない場合はどうすればよいですか。
wcf - WCF Web サービスの使用中にクライアントを認証する方法は?
Web サービスを利用しながらクライアントを認証したいと考えています。ユーザー名とパスワードを渡すことができる ClientCredential というクライアントで公開されているプロパティが表示されます。この情報を WCF Web サービスに渡す方法と、ユーザー ID とパスワードを認証する方法を教えてください。
wcf - WCF呼び出しクラスで失敗した接続をトラップする場所は?
WCF 呼び出しをカプセル化するクラスを作成しようとしています (重要な場合、クライアントは Silverlight です)。すべて問題なく動作しますが、サーバーが応答しないかのように、接続障害をトラップする方法がわかりません。ChannelFactory から得られたコードのどこかでちょっとした作業が行われているように見えますが、よくわかりません。一般的なコードレビューも大歓迎です。:)
要するに、チャネルの作成、または try/catch の begin または async の結果デリゲートを囲んでも、失敗した接続がトラップされません。そのキャッチで ServiceCallError イベントを実行したいと思います。
興味のある方のために、スタック トレースを次に示します。
これを実現するために、ブラウザーでアプリを起動し、Visual Studio から Web サーバー プロセスを強制終了します。テスト環境では、クライアント システムのネットワーク接続を切断しても同じ結果が得られます。
完全な例外の ToString() は次のとおりです。
ちなみに、これをキャッチできる唯一の方法は、SL クライアントでアプリ レベルの UnhandledException イベントを使用することです。
wcf - URL を介した WCF サービスへのアクセス
私はWCFサービス(WCFService1としましょう)を2台のリモートマシンにデプロイしています。同じサービスが 2 つの異なるマシンにデプロイされているため、共通のインターフェイスと共通のメソッドが公開されています。
WCFService1 は Machine1 と Machine2 にデプロイされます。
クライアント マシンから WCF サービスを利用するために、クライアント アプリを作成しました。
URL http://11.12.25.23/WCFService/Service1.svcを使用して、WCF サービス (WCFService1) の設計時の参照を追加しました。
これで、サービスで公開されているメソッドを呼び出すことができます。今までは大丈夫...
今私の質問は、別のマシンでホストされている同じサービスを別の URL ( http://12.12.24.24/WCFService/Service1.svcとしましょう) で実行時にクライアントを更新する必要がある場合、どうすればそれを行うことができますか?
現在、私はこれをやっています:
しかし、サービスで公開されているメソッドを呼び出すために使用するたびに、バインディングの不一致エラーが発生しました。
c# - WCF クライアントでメッセージをインターセプトする
Web サービス拡張機能を使用した経験のある人はいますか? MS の例から Web サービス拡張を作成することに時間を費やしました。
VS IDEの「プロジェクト>サービス参照の追加」を使用して、WSDLへの参照を追加することで構築された.net 3.5 Webサービスクライアントがあります。これで Web サービス クライアントがビルドされ、すべて正常に動作しました。
Web サービス クライアントの要求と応答の本文をインターセプトする必要があります。Web Service Extensions への参照をたくさん見つけましたが、疲れた攻撃を受けており、拡張機能を起動させることができません。
ここの「SOAP 拡張機能の実装方法」( http://msdn.microsoft.com/en-us/library/7w06t139.aspx ) の MS の例を使用しました。これは、要求/応答ストリーム用のロガーを構築します。
関連する MS の記事「Soap Message Modification」( http://msdn.microsoft.com/en-us/library/esw638yk(VS.85).aspx ) には、Web クライアントの SOAP 拡張機能を有効にする方法が示されています。
SOAP 拡張機能の実装
クライアント アプリケーションまたはサーバー アプリケーションで SOAP 拡張機能を実行するには、2 つの方法があります。まず、拡張機能を実行するようにアプリケーションを構成できます。すべての Web サービス (特に vroot) のすべての Web メソッドに対して実行するように SOAP 拡張機能を構成するに
<soapExtensionTypes>
は、Web.config ファイル内の Element セクションを編集します。次のコードは、type 属性値が 1 行に収まる必要があり、拡張機能の完全修飾名に加えて、署名されたアセンブリのバージョン、カルチャ、および公開キー トークンを含める必要があることを示しています。<configuration>
<system.web>
<webServices>
<soapExtensionTypes>
<add type="Contoso.MySoapExtension, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0"/>
< /soapExtensionTypes>
</webServices>
</system.web>
</configuration>
traceextension を独自のクラス ライブラリにコンパイルし、Web サービス プロジェクトの web.config で次のように参照しました。
<add type="TraceExtension, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ef8757fac167b8d8" priority="1" group="High"/>
喜びはありません。何もログに記録されず、ブレークポイントはヒットしません。
次に、参照されたクラスを削除し、ソース コードを Web サービス プロジェクトにドロップしました。
次のように参照を追加しようとしました(私の名前空間はServcieTest001です):
<add type="ServiceTest001.TraceExtension" group="High" 優先度="1" />
拡張機能「getting-raw-soap-data-from-a-web-reference-client-running-in-asp-net」を有効にするためのガイドとして、次のスレッドを使用しました ( http://stackoverflow.com/questions /300674/getting-raw-soap-data-from-a-web-reference-client-running-in-asp-net )。
まだ喜びはありません。次に、上記のスレッドからコードをコピーしましたが、SOAP リクエストを行ったときに拡張機能を起動できません。
機能しているダウンロード可能な Web サービス拡張機能のデモ プロジェクトを誰かに教えてもらえますか?