問題タブ [servicehost]
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 - グローバルWCFServiceHostリクエストイベントをキャプチャします
私は、WPFアプリケーションによってホストされている非常に単純なWCFプロジェクトを使用しています。基本的には、PC上のデータを処理するためのRESTサーバーとして動作します。IISはなく、SingleInstanceとして実行されます。どのIPがMyServiceにアクセスしているか、どのWebMethodを呼び出そうとしているのかを確認したいと思います。
さて、サービスクラス自体で宣言されたイベントをサービスの一部として持つことができます。これがそれを動かすいくつかのコードです、それはすべて期待通りに正確に動作します(炎はありませんm_
;)):
次に、各サービスメソッドでこのイベントを発生させて、誰かがそれを使用しようとしたことをアプリが認識できるようにします。素晴らしいですが、それに直面しましょう、これはひどいです。
私は次の線に沿って何かを書かなければなりません:
サービスコールごとに。
私のサービスへの呼び出しを検出できる、より一般的なキャッチオールイベントはありますか?おそらく、私が完全には理解していない多くのBehaviour/ChannelDispatcherタイプの1つによって起動されたものがあります。
助けてくれてありがとう、トム
wcf - VS 2008で「サービス参照の更新」を呼び出すときにWCFサービスの操作契約の制限を回避するにはどうすればよいですか?
アプリケーションにある単一のWcfサービスで問題が発生しています。その中には約150の[OperactionContract]があります。VisualStudio2008内でサービス参照を更新できなくなりました。
アップデートを呼び出そうとすると、「ソケットが強制的に閉じられました」から「無効なタイプ」まで、さまざまな種類の奇妙なエラーやその他の奇妙なメッセージが表示されます。10〜20の操作をコメントアウトすると、正常に機能します。
私はここ、MSDN、および多くのブログであらゆる種類の投稿を読みました。これらはすべて、メインバインディングまたはMetadataExchangeバインディングのいずれかで変更する必要のあるバインディング構成を指します。
私の問題は、これらすべてを試したが、まだ確実に機能させていないことです。
私はアプリケーションでサービスを自己ホスティングしており、その同じアプリケーションがクライアントでもあります。Wcfサービスレイヤーを介してアプリケーションを2つに分割している最中であるため、これらは(現在)同じ構成ファイルを共有しています。
これが私が定義した私のバインディングを示す抜粋です:
この不思議な限界に達するまで、この2週間はうまく機能していたUpdate Service Referenceをクリックして、プロキシクラスを生成できるようにする必要があります。
mexのhttpバインディングについてのこの話を解決するために私が見た例のほとんどですが、私はセルフホスティングなので、可能であればnetTcpだけを使い続けたいと思います。
誰か助けてくれませんか?
ありがとうございました。
* アップデート *
@Aliostadの提案を試しましたが、最初はうまく機能しているように見えました。UI要素を更新するWcf呼び出しのいくつかを試すまでは。これらは、Visual Studios(サービス参照の追加)ツールによって生成されたプロキシクラスでNetTCPバインディングを使用するときにたまたま機能しました。ただし、チャネルファクトリを使用する場合は機能しません。
JuvalのWCF本でSyncrhonizationContextを調べてみましたが、何も機能していないようです。
ChannelFactoryを使用して作成するチャネルのバインディングとして名前付きパイプとNetTCPの両方を使用しようとしましたが、長時間実行されるWcf操作に関連して、これらは互いに非常に異なる動作をするように見えますが、どちらもUI要素を更新するためには機能しません。
私のサービスは実際にはRhino3DCADエンジンのプラグインで実行されており、セラチン呼び出し(Renderなど)によってRhinoのUIが更新されます。これがスレッド境界の問題を引き起こしていると思います。私が受け取る例外は次のとおりです。 保護されたメモリの読み取りまたは書き込みを試みました
このシナリオでChannelFactoryメソッドを効果的に使用したり、特定のWcfクラスの操作が多すぎてサービスプロキシを生成できないという問題を修正したりするための提案があれば、ぜひご協力ください。
ありがとう!
c# - 開いているセッションによって WCF サービス ホストの終了がブロックされ、receiveTimeout を設定しても役に立たない
WAS がホストするサービス (PerCall、Concurrency.Multiple) を正常にシャットダウン/リサイクルする必要がありますが、非アクティブな (ただし開いている) クライアント プロキシはサービスの正常なシャットダウンをブロックします。
receiveTimout が起動して非アクティブなセッションを破棄することを期待していましたが、そのようには機能しないようです。
IIS/WAS リサイクルは、終了タイムアウトを TimeSpan.MaxValue に設定して ServiceHost.BeginClose を呼び出します。
スループットと低レイテンシーが必須であるため、netTcpBinding を使用して長期間有効なクライアント プロキシ (実際には制御できません) を許可する必要があります。
以下の問題を再現しました。この問題に関する回避策とヘルプがあれば幸いです。
wcf - WCFローカルマシンのServiceHostおよび管理者権限
ローカルユーザー(管理者権限なし)でServiceHostを使用してWCFサービスをセルフホストで実行する方法はありますか?ローカルコンピュータ上にある必要があります。
私は将来複数のデスクトップにインストールされるアプリケーションに取り組んでいますが、現在はサーバーとクライアントの両方の1つのデスクトップでのみ機能する必要があります。将来の問題を排除するために、1つのdestopアプリでもwcfスタック全体を使用したいと思います。基本的に-管理者権限のない1つのシステムでWCFサーバーとクライアントを起動する必要があります。多分それはnetnamedpipebindingで行うことができますか?
乾杯、アンドリュー
c# - セルフホステッド WCF サービスのメソッドをローカルで呼び出すことはできますか?
基本的にパブリッシュ サブスクライバー パターンである WCF サービス コントラクトがあります。
WCF サービスは、公開元の Windows サービス内でホストされています。クライアントはメッセージをサブスクライブし、Windows サービスが何かを実行すると、すべてのクライアントにパブリッシュします。
サービスをホストするために、ServiceHost クラスを宣言しました。Contract クラスには、インターフェイスでフラグが設定されていないが公開するクラスで実装されているメソッドがあります。
このメソッドを (WCF 経由ではなく) ローカルで呼び出すことができるようにしたいと考えています。これにより、コールバック経由でメッセージが発行されます。
ServiceHost からコントラクト クラスのインスタンスに到達できないようです。
これは可能ですか?クライアントをサービスに組み込むことも回避策であることは知っていますが、それ自体に接続するクライアントを作成するのは少し奇妙に思えます。
前もって感謝します
DJIDave
app.config
c# - 停止/開始後、URIの登録はすでに存在します
私は現在、ServiceHostを作成し、それを取り除き、後で再作成するアプリケーションに取り組んでいます。問題は、サービスホストを再作成しようとすると、サービスホストを削除すると、「停止/開始後にURIの登録が既に存在する」という例外が発生することです。奇妙なことに、私には3つの別々のホストがあり、1つは機能し、2つは機能しません。何かが適切に処分されていないと思いますが、理由はわかりません。
私はこのようなホストを作成しています
その後、そのようにそれらを取り除く
私はまた、運がなくて閉じる代わりに中絶を試みました。
c# - NetNamedPipeBinding: パイプ メソッドのパラメーターが空です
NetNamedPipeBinding エンドポイントでリッスンする ServiceHost があります。クライアントによって呼び出され、サーバーによって処理される単一のメソッドを持つサービス コントラクト クラスがあります。メソッド (PipeRequest() と呼びます) には Request パラメータがあります。クライアント側では、このオブジェクトにデータを入力しますが、サーバーに送信されるまでは空です。なぜこれが当てはまるのでしょうか?
wcf - DI による WCF コンストラクター サービス タイプ
現在、複数の WCF サービスをホストする小さな App-Server を構築しようとしています。これらのサービス (およびもちろんその依存関係) は、DI/IoC コンテナー (現在は LightCore ですが、CommonServiceLocator を介して使用しているため、簡単に交換できるはずです) によってインスタンス化する必要があります。残念ながら、私は問題に遭遇しました。明らかに、前述の WCF サービスをホストする ServiceHost インスタンスを作成する必要があります。サービスのすべての依存関係を処理するために、カスタマイズされた InstanceProvider と ServiceBehavior を既に構築しましたが、ServiceHost のコンストラクターには、ホストするサービスのサービス タイプが必要です。私のプログラムのこの時点では、DI コンテナーだけが現在使用されている Service 実装を認識しているため、Interface Type しか認識していません。
安上がりな方法は、Service Locator を介してサービス タイプの「ダミー」インスタンスを作成し、ServiceHost コンストラクターに myDummyInstance.GetType() の出力を与えることですが、これは役に立たないインスタンス化と代わりに Service Locator を使用することを見るのが面倒です。 DI...もっと良い方法があるはずです。
アイデアはありますか?:)
wcf - WCFサービス:app.configと属性、または両方の組み合わせ
WCFアプリケーションには、次の属性を持つサービス契約があります。
属性を持つサービス契約の実装:
サービスホスト(開発用のWindowsサービスまたはコンソールアプリケーション)
最後になりましたが、app.config:
質問:app.configと属性を混在させることは可能ですか?どの構成が優先されますか?良い習慣は何ですか?
たとえば、ServiceContract(SessionMode = SessionMode.NotAllowed)は、wsHttpBindingがセッションを使用するのを防ぎますか?
[回答:app.configの設定が実際に適用されていることを確認するにはどうすればよいですか?完全修飾名が機能します。]
wcf - NServiceBusとwcfServiceHost
IBusにメッセージを公開する必要があるwcfServiceHostがあります。
ホストクラス(wcfによって開始されます)からIBusに正常にアクセスするにはどうすればよいですか?