問題タブ [wcf-behaviour]

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 投票する
0 に答える
565 参照

wcf - メッセージ レベル セキュリティで netTcpBinding を使用するには?

WSE3 サービスを WCF プラットフォームに移行しています。クライアントは従来の WSE3 クライアントになります。

いくつかの要件を満たすために、カスタム サービス動作を作成しました。web.configサービス動作の構成 ( ) には、serviceCertificate要素が含まれています。

この動作は、behaviorConfiguration設定を使用して私のサービスに適用されます。ここで、同じ IIS 7.5 でホストされている別の WCF サービスから 1 つの WCF サービスを呼び出したいと考えています。だから私はnetTcpBinding(そしてnetNamedPipeBindingも)追加しました。WCF サービスから別のサービスの OperationContract を呼び出すと、以前はAccess is denied.エラーが発生していました。behaviorConfigurationサービスの設定を削除すると、 netTcpBinding(および netNamedPipeBinding) が機能しました。

構成は以下のとおりです。


web.config のサービス動作構成は次のとおりです。

のバインディング構成netTcpBindingは次のとおりです。

私は知りたいです、

  1. このようなシナリオで netTcpBinding を使用するにはどうすればよいですか?
  2. 同じサービスに対して 2 つの異なる動作を使用できますか? はいの場合、どのように?
  3. いいえの場合、このシナリオで名前付きパイプのバインドを実現するにはどうすればよいですか?
  4. サーバー証明書関連のものでAccess is deniedエラーが発生するのはなぜですか? 内部例外はありません。ただAccedd拒否メッセージ!
0 投票する
1 に答える
435 参照

c# - WCF では、エンドポイントの動作、サービスの動作、バインディングを再利用できますか?

WCF では、エンドポイントの動作、サービスの動作、バインディングを再利用できますか? または、ID を除いて同じであっても、各サービス / エンドポイントには別個のものが必要です。

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

c# - WCF 操作で戻り値を変更する

WCF でデータセットを返すすべての操作で、プロパティ SchemaSerializationMode に .ExcludedSchema 値が設定されていることを確認したいと考えています。

CustomBehavior でこれを行うことはできますか? CustomDispatchBehavior を実装して MessageInspector を追加しようとしましたが、AfterReceiveRequest メソッドと BeforeSendReply メソッドでは戻り値を処理できません。BeforeSendreply では、戻り値は既にシリアル化されています。コードはどこにプラグインできますか?

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

wcf - WCF REST の操作フィルターのようなものですか?

私はAuthorizeAttribute、MVC のようなものを探しています。次のように使用できます。

そのWcfAuthorizeAttributeは、FormsAuthentication でユーザーを認証しようとし、コンテキストの IPrincipal を設定するか、HTTP 401 Unauthorized を返します。

を試してみましたIOperationBehaviorが、属性を設定したメソッドではなく、最初のメソッドで実行されます。

これを WCF REST でどのように実現できますか?

よろしく。

PS: スターター キットで RequestInterceptor の例を見たことがありますが、私が望むのは一部のメソッドのみに配置することです。この例は、すべての操作で実行するフィルターのように見えます。

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

.net - ネットワーク経由で app.config に WCF の behaviorExtension を使用してアプリを読み込むと、SecurityException が発生する

WCF behaviorExtension を追加した .NET 4 .exe (Winform デスクトップ アプリ) があります。アプリはローカル マシンでは正常に読み込まれますが、ネットワーク経由で読み込まれると SecurityException がスローされます。setMaxFaultSizeBehavior behaviorExtension を省略した場合、ネットワーク経由でアプリをロードできます。これを機能させるのに役立つ情報をいただければ幸いです。ファイルがブロックされていないこと、およびアセンブリ名がスペースを含めて完全に一致していることを確認しました。

app.config の関連部分は次のようになります (型名とアセンブリ名を短縮しました。実際の構成ファイルでは、完全な名前空間とアセンブリ名を使用しています)。

ネットワーク経由で実行しているときに発生する例外は次のとおりです。

System.Security.SecurityException の内部例外あり

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

.net - カスタム WebHttpBehavior を追加できません: 同じキーを持つ 2 つの項目を追加できません

最初に少し背景を説明します。WebHttpEndpoint を使用する WCF 4 の REST サービスがあります。すべてのサービス メソッド、またはすべてのサービス クラスに明示的なエラー ハンドラーを配置するのではなく、ログを記録し、適切なカスタム メッセージをラップしてクライアントに渡すことができる、一元化されたエラー処理が必要です。

IErrorHandler を実装し、それを顧客の WebHttpBehavior に追加することで、これを実行しようとしています。

次に、ExtensionElement を使用してそれを追加します。

エラー処理へのアプローチ全体が悪い考えのように思われる場合は、お気軽にコメントしてください...

ただし、私の質問は、サービスを開始しようとしたときにこの例外が発生する理由です。

webHttp または errorHandler の動作は単独で存在できるようですが、共存することはありません。

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

.net - カスタム動作が web.config に登録されない

Json.NET (newtonsoft) をカスタム シリアライザーとして使用しているアプリケーションがあります。現在、この WebHttpBehavior の派生物をカスタム WebServiceHostFactory に追加しています。添付方法については、このブログの最後にあるコード スニペットを参照してください。

IIS でこのサービスをホストしているので、カスタム ホスティング コードを取り除き、カスタム動作を web.config に追加したいと考えています。手順は、このmsdn articleに示されています。

だから私はそれを次のようにしようとします:

残念ながら、私はそれを機能させることができません。これを行うと、Visual Studio から次のように通知されます。

要素 'behavior' には無効な子要素 'NewtonsoftJsonBehavior' があります

前述のmsdn の記事では、次のように述べられています。

要素に構成機能を追加するには、構成要素を作成して登録する必要があります。詳細については、System.Configurationのドキュメントを参照してください。

要素とその構成タイプを定義したら、次の例に示すように、拡張機能を使用できます。

私が欠けているのはまさにそれだと感じています。どういうわけか、要素とその構成タイプを登録します。悲しいことに、これを行う方法を教えてくれるはずのSystem.Configurationの頭や尾を作ることはできません。それが基本的に私の質問です:

構成要素を作成して登録するにはどうすればよいですか? それが私の問題でない場合、何が問題なのですか?

よろしくお願いします!

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

c# - WCF-カスタムエンドポイントの動作を使用する際の問題への対処

WCFサービスにカスタムエンドポイント/操作拡張機能を実装しようとしています。websconfigにカスタム拡張機能を接続して、サービスと操作を属性で装飾できるようにしました。ただし、そうすると、次のエラーが発生します。

To'http:// localhost:1605 / Graph.svc / Triples / vbid / akb9185 / 0 / en-us'のメッセージは、EndpointDispatcherでのAddressFilterの不一致により、受信側で処理できません。送信者と受信者のEndpointAddressesが一致していることを確認します。

私は多くの検索を行いましたが、このエラーが何を意味するのか、またはそれを修正する方法を理解できません。誰かが助けることができますか?

これは、エンドポイントと操作の動作を「注入」しているサービスです。

エンドポイントとサービスの動作の構成は次のとおりです。

カスタムエンドポイント/操作拡張機能の構成は次のとおりです。

そして最後に、私のサービス契約がどのように見えるかの例を示します。

「CorsBehavior」は、IEndPointBehaviorとIOperationBehaviorの両方を実装するカスタム属性です。

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

wcf - コードで作成されたエンドポイントを持つサービスの構成ファイルにwcfサービスクレデンシャルを設定します

構成ファイルでセキュリティ動作の構成を設定しながら、コードでサービスエンドポイントのURIを設定できるようにしたい。

以下は私にいくつかの方法を教えてくれます、サービスは正しいバインディング構成を使用します-しかし私は証明書構成を構成ファイルに移動する方法を見つけることができません。

編集:ここでいくつかの混乱があったことに注意してください-設定ファイルはメッセージレベルのセキュリティの証明書を構成し、SSLポートはトランスポートレベルの証明書を制御します-リチャードブルーエットの答えによると

コメントアウトされたコードは、構成ファイルで同等のものを見つけるために必要なものです

編集:後世のために、メッセージレベルとトランスポートレベルの両方に対応する必要があるため、質問と回答を更新してメッセージレベルとトランスポートレベルの両方をカバーしました。

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

c# - WCF動作拡張の単体テスト

これは私を夢中にさせています。エラーが発生した場合にリクエストのコンテンツレスポンスを変更するために使用する拡張機能があります。基本的に、すべてが機能する場合は通常どおりJSONにシリアル化されますが、未処理の例外が発生した場合は、別のオブジェクトに基づいてシリアル化されます。

これを回避するための単体テストが必要ですが、その書き方がわかりません。それが機能したことを検証する手段は、StatusCode、障害メッセージインスタンス、および応答のContentTypeを中心に展開されます。

戻る応答を変更するために、WebOperationContext静的クラスを利用します。これをモックする例を見たことがありますが、実際のコードに浸透し始める特別なロジックをハードコーディングする必要があるようですが、これは望ましくありません。

WCFの動作拡張を単体テストするための最良の方法は何ですか?