問題タブ [custom-binding]
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を使用して既存の接続されたストリームをラップする
双方向に接続されStream
ているので、通信を行いたいと思います。ストリームの背後にある基本的な実装は重要ではありません、私はStream
レベルで働きたいです...
ストリームに独自の通信プロトコルを実装するのではなく、既存のWCFの良さをすべて使用して、双方向(要求/応答+コールバック)のWCF通信チャネルで既存のストリームをラップしたいと思います。
私の質問は、どうすればこれを行うことができますか...?
アップデート:
私はカスタムトランスポートを実装する道を歩みました。私はこれを機能させていますが、それでも完全には満足していません...
ストリームをラップするためのを適切なandIDuplexSessionChannel
とともに実装し、チャネルファクトリを作成するためのBindingElementを実装しました。ここで、接続されたストリームを通過し、作成時に最終的にこれらをトランスポートチャネルに渡します。IChannelFactory
IChannelListener
したがって、次のように、ストリームを介してサービスにアクセスするためのクライアントプロキシを作成できます。
私が抱えている問題は、WCFがを使用しServiceHost
てチャネルのサーバー側を作成するように設定されているようIChannelListener
です。私の場合、すでに接続されたストリームがあり、これ以上着信接続をリッスンできなくなります。ServiceHost
これを回避することはできますが、チャネルのサーバーエンドを作成するためにを使用することはあまりありません。これは、それを機能させるために多くのあいまいな定型文とハックが発生するためです。
質問
したがって、IDuplexSessionChannelsを取得し、サーバー側とクライアント側の両方でこれらをチャネルプロキシにラップするためのより良い方法を探しています。
または、を必要としない別のServiceHost実装かもしれませんIChannelListener
。
実際、ここでの問題は、単一のサーバー、複数のクライアントの配置が必要ないことです。WCFサービスとクライアントの間に1対1の関係があります。これらのいずれかをインスタンス化する正しい方法はありますか?
別の言い方をすれば、ServiceHostを使用せずにサーバー側のサービスインスタンスを作成したいと思います。
この段階で何か提案をいただければ幸いです。
wcf - protobuf-netで使用するためのWCFクライアントとサービスの構成
私はこの問題について新しい質問を開くことにしました。インターネット上のどこにもこの問題についての正確な答えが見つからなかったので、おそらくこの質問を拡張しました。
protobuf-netを使用して、WCFクライアントとサービス間で交換されるメッセージをシリアル化/逆シリアル化したい。このサービスは、Windowsサービスで自己ホストされます。クライアントとサービスの両方がプログラムで構成され、に非常によく似たカスタムバインディングを使用しますwsHttpBinding
。サービス参照コードは、VisualStudioの[サービス参照の追加]オプションを使用して生成されます。WCFサービスで使用されるORMはEntityFramework4であり、そのコードはEF 4.xPOCOGeneratorを使用して生成されます。私のサービス構成の詳細については、ここで始めた質問を参照してください(ここで、現在のシリアライザーについて説明しましたDataContractSerialzizer
)。
カスタムDTOのリストを返す1つのサービス操作でprotobuf-netをテストしただけです。操作は次のとおりです(ここにコードをコピーして貼り付けただけです。英語ではなく、母国語で名前が付けられたフィールドがある可能性があります)。
OsobaView
クラスの定義は次のとおりです。
ProtoContract
「サービス参照の追加」を使用して参照コードを生成しているため、クライアントにsとメンバーを認識させるために、2つの回避策のいずれかを使用する必要がありました。
- DTOの共有アセンブリを使用する(EFで生成されたPOCOをクライアントに渡すため、カスタムDTOを除いて、私の場合は理想的なソリューションではありません)
ProtoPartialMember
アプローチを使用
私はそれらの両方を使用し、 protobuf-netのv1とv2の両方を使用しました。すべてのソリューションで同様の結果が得られ、クライアントがまったく逆シリアル化されていないと思われました。読む。
ProtoPartialMember
私がこのアプローチを使用した場合を考えてみましょう。最初はv2を使用しました。使い方が大好きProtoOperationBehavior
です。呼び出されるサービス操作は次のとおりです。
クライアント側でDataContractSerializerOperationBehavior
必要ProtoOperationBehavior
なサービス操作を置き換える方法は次のとおりです。
そしてもちろん、DTOの上記の回避策の実装は次のとおりです。
これで、クライアントからこのサービスオペレーションを呼び出すと、が取得されnull
ます。しかし、フィドラーは同意しません。応答ヘッダーには、次のように明確に記載されています。
...そしてメッセージ本文:
それでは、 v1で試してみようと思いました。サービス面では、あまり変わっていません。v2 .DLLへの参照を削除し、v1.DLLへの参照に置き換えました。クライアント側では、サービス操作の動作に追加するコードを削除し、ProtoOperationBehavior
代わりに次の行を追加する必要がありました。
私はそれを起動し、操作を呼び出しましたが、今回は結果がありませんnull
。今回は空白のフィールドのリストです。繰り返しになりますが、Fiddlerは以前と同じように言ったため、同意できませんでした。同じコンテンツの長さと同じメッセージ本文。
何が起きてる?
PS何か価値がある場合は、次のWCF構成を使用します。
編集
さらに多くの情報を提供するために、私はそこに書かれていることを読みましたが、それは役に立ちませんでした。Visual Studioによって生成されたサービス参照を削除し、独自に作成してサービスコントラクト全体を共有しましたが、何も変更されていません。
wcf - コードを使用してWCFサービスのカスタムバインディングを作成するにはどうすればよいですか?
WCFサービスのカスタムバインディングを記述し、それをサービスに含めるにはどうすればよいですか。設定ファイルにないコードでそれを行う必要があります。
カスタムバインディングを作成する場合、WCFサービスに新しいバインディングを含めるにはどうすればよいですか?現在、configでこれを行う方法を知っていますが、コードでこれを行うにはどうすればよいですか?または、カスタムバインディングを作成した後、新しいバインディングを使用するようにWCFサービスを作成するにはどうすればよいですか?
wcf - ReaderQuotasをサポートするWCFのカスタムメッセージエンコーダー
ここで答えが見つかりました(最後の投稿):http ://social.msdn.microsoft.com/Forums/eu/wcf/thread/f5c0ea22-1d45-484e-b2c0-e3bc9de20915
カスタム(TextOrMtomEncoder)の実装に関する最後の問題が1つあります。これは、ReaderQuotasの実装です。
私はウェブをたくさん検索しましたが、パズルの最後のピースを理解することができません。
'BindingElementExtensionElement'と'MessageEncodingBindingElement'の実装を含むクラスがあります。
MessageEncodingBindingElement実装には、次のオーバーライドが含まれています。
これは、TextMessageEncodingのようなデフォルトの.NETMessageEncoding実装から「借用」しました。
MSDNがそう言っているので、これは正しい実装でなければなりません。
構成はweb.configから正常に読み込まれ、両方のクラスのReaderQuotasプロパティが正しく設定されていることがわかりますが、.NETがMessageEncodingBindingElement実装からReaderQuotas構成を読み取っていないようです。
私の推測では、MessageVersionはこのメソッドを介して要求されるため、.NETはGetPropertyメソッドを使用して構成をロードします。ただし、問題は、TがXmlDictionaryReaderQuotasと等しくなることはないため、ReaderQuotasが要求され始めることはないということです。
私の質問の根本は奇妙なことです。私はIIS7.5を搭載したWindows7x64マシンで開発しています。「大きな」ファイル(100 KBなど)の投稿は私のマシンで機能します。しかし、サービスをWindows Server 2008 R2に展開すると(2つの異なるサーバーを試した)、次のエラーが発生します。
フォーマッタは、メッセージを逆シリアル化しようとしたときに例外をスローしました。パラメータ http://socialproxy.infocaster.net:argumentを逆シリアル化しようとしたときにエラーが発生しました。InnerExceptionメッセージは次のとおりです。'タイプSystem.Objectのオブジェクトの逆シリアル化中にエラーが発生しました。XMLデータの読み取り中に、配列の最大長のクォータ(16384)を超えました。このクォータは、XMLリーダーの作成時に使用されるXmlDictionaryReaderQuotasオブジェクトのMaxArrayLengthプロパティを変更することで増やすことができます。1行目、1584の位置。詳細については、InnerExceptionを参照してください。
そして、私が言ったように、それは私のマシンで動作します:-/
誰かが私がこれを解決する方法を教えてもらえますか?
よろしくお願いします!
WCFサービス構成:
wcf - 子アプリケーションの web.config のカスタム バインディング要素を削除する
http://example.comで実行されている WCF サービス (.NET 3.5) アプリケーションがあります。その web.config は JSONP エンコーディング用に構成されています。
クラスMy.SharePoint.WebServices.JsonpBindingExtension
はアプリケーションの一部です。
現在、別の WCF アプリケーションをhttp://example.com/other-services/にデプロイしていますが、ここで問題が発生します。このサービスを呼び出そうとすると、My.SharePoint を読み込めないというエラーが表示されます。この他のアプリケーションでは使用していませんが、.WebServices アセンブリ。トップアプリケーションのweb.configがこのweb.configにマージされているようです。
jsonpMessageEncoding
このサブアプリケーションを削除/登録解除する方法はありますか?
私は次のようなことをしたいと思っていました:
しかしremove
、この構成セクションにはありません。
何か案は?
knockout.js - ノックアウトでドロップされたドラッグ要素を削除する方法
ドラッグ アンド ドロップする 2 つのカスタム バインディングがあり、ドロップ可能な領域にドロップする必要がある要素のリストがありますが、これが発生した場合、ドラッグした要素をソース リストから削除する必要があります。次のようにしています。 、しかし、ドラッグされた要素がソースリストから削除された場合、「プロパティ 'オプション' の値を取得できません: オブジェクトが null または未定義です」というエラーが表示され、jquery-ui.1.8.17 でデバッガーが中断します。 .min.js ファイルのこの行var d=a(this).data("draggable").options
。この問題は、ドラッグ バインディングで発生します。
これが私のコードです:
javascript - 「IF」バインディングを拡張するノックアウト カスタム バインディング
Ryan Niemeyer のブログに基づいて次のカスタム バインディングを作成しましたが、機能しませんでした。彼をフェードする代わりに、divはまったく表示されません。「init」関数を追加しようとしましたが、問題が解決しなかったため、ライアンが例に示したような単純な更新関数に戻りました。
htmlで次のことを行います:
ブログ投稿: http://www.knockmeout.net/2011/07/another-look-at-custom-bindings-for.html
.net - HTTPS MEX エンドポイントを機能させることができません
Azure ACS で動作するように WCF を構成しようとしています。この WCF 構成には 2 つのバグがあります。
- MEX エンドポイントは公開しません。
- カスタム動作拡張は呼び出されません。(覚えていない変更を加えた後、それをやめました)
ここで何が間違っている可能性がありますか?
編集:実装の詳細については、次の動作拡張要素があります(現在は呼び出されていません)
名前空間とアセンブリは構成で正しいです。トークンの検証を確認するためのコードは他にもありますが、私の意見では、少なくとも MEX を公開し、さらに先に進むには CreateBehavior() を呼び出す必要があります。
knockout.js - Bootstrap chechbox と Knockout: テンプレートでカスタム バインディングが機能しない
ラベル付きのチェックボックスの Twitter Bootstrap では、次のようなマークアップが使用されます。
ラベルのノックアウト標準の「テキスト」バインディングが機能していません。チェックボックスのマークアップが単純にテキストに置き換えられます。カスタム バインディングを作成しました。
インライン テンプレートで問題なく動作します。
ただし、名前付きテンプレートでは機能しません: チェックボックスは表示されますが、バインディングはありません。
何か助けはありますか?
jquery - カスタムバインディングの一部として、テンプレートにカスタムバインディングを設定する
主題は少し紛らわしいですが、これが私がやろうとしていることです:
ページにグリッドを表示するためのKnockoutJSカスタムバインディングを作成しました。これはうまく機能します。私はサイトのSimpleGridモデルに従いました。ただし、フィールドの一部は日付、ブール値などです。カスタムバインディングを使用して、time agoプラグインなどを使用して日付を変換したいと思います。グリッドを作成する前に、グリッドにカスタムバインディングを割り当てるだけです。「再利用可能な」グリッドバインディングを使用しているので、グリッドのヘッダーとセルのテンプレートに割り当てるバインディングと値のリストを(列定義の一部として)渡すことができるようにしたいと思います。
これが私のページのHTMLです:
HTMLページビューモデルは次のとおりです。
これが私のカスタムグリッドバインディングとテンプレートです:
これを行う簡単な方法はありますか?
ありがとう