問題タブ [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 - ServiceHostFactory.CreateServiceHost の失敗を処理する正しい方法は何ですか?
しばらくの間、問題なくテストされているいくつかの WCF サービスがあります。Windows プロセス アクティベーション サービス (WAS) を使用して IIS でそれらをホストします。クライアントが接続すると、サービスが起動し、満足しています。
さて、私は偏執狂的ですが、これを出荷する前に、サービスが特定の種類の障害を処理する方法に関連するさまざまなエッジ ケースをテストしたいと思いました。実験の 1 つは、特定のサービスの ServiceHost 自体の作成中に失敗しました。
一部の初期化作業を行い、完全に構成されたサービス ホストを返すカスタム ServiceHostFactory (ServiceHostFactoryBase から派生) があります。初期化中に CreateServiceHost が ServiceActivationException をスローする構成エラーをシミュレートしています。また、例外をログに記録します。
[余談ですが、クライアントがこの例外を確認すると、サービスへのアクセスを停止します (初回のアクティブ化に失敗した場合、人間が関与する必要があるという前提で)。これは、一時的なネットワーク状態を想定して、クライアントが定期的に試行し続ける EndpointNotFoundException などとは異なります。]
私たちが見ているのは、クライアントが (1 回) サービスへのチャネルを開こうとしているということです。ServiceHostFactory は、サービスをアクティブ化するために数秒間にわたって何度も試みているように見えますが、それぞれの試みは予期された例外メッセージで失敗し、アプリケーション プールは単純にロックされているように見えます。そのアプリ プール内で実行されている (正常にアクティブ化された) 他のサービスへの呼び出しは永久にハングします。
それは奇妙に思えます。失敗したサービスをアクティブ化しようとして数回失敗した後、失敗したサービスがアプリ プールから起動されることは気にしませんが、他のサービスを強制終了するのは間違っているようです。アプリ プールはリサイクルも停止もしないことに注意してください。サービス操作への要求に応答せずにそのまま待機します。
あるサービスのアクティブ化に失敗すると、そのサービスは「オフライン」になるが、アプリ プール内の他のサービスは引き続き要求を処理できるようにする必要があることを WCF に伝えるために、何か他にすべきことはありますか? それとも、WAS でもっと基本的なことが抜けているのでしょうか?
wcf - 複数バインディングで ServiceHostFactory を使用する WCF サービス ホスト
IIS でホストする WCF サービスを作成しました。ServiceHostFactory メソッドを使用してサービスをホストしています (Unity を DI として使用)。
HTTP と TCP を介して、複数のバインディングを使用してサービスをホストしたいと考えています。
ベースアドレスを指定しようとしましたが、取得できません。サービスがHTTPスキーマに登録されているため、まだエラーが発生します。
以下のコードスニペットは、あなたとアイデアを与えるかもしれません.
構成ファイル:
誰が私に何ができるかを提案できますか?
主なことは、複数のバインディングで ServiceHostFactory を使用してサービスをホストすることは可能ですか?
はいの場合、誰かが私をどのように助けてくれますか?
wcf - 既存の ServiceHostFactory と ServiceHost を使用して WCF エクステンションを Ninject する
Ninject wcf 拡張機能を使用するのは困難です。IIS でサービスをホストし、svc ファイルを使用します。NinjectServiceHostFactory
(svc ファイル内) とNinjectHttpApplication
(ファイル内)の使用法を説明する多くの投稿を読みましたが、global.asax
非常に単純に思えます。私たちの問題は、すでにカスタムServiceHostFactory
とがあることServiceHost
です。
誰かが私たちServiceHostFactory
とを組み合わせる正しい方法を教えてもらえますかNinjectServiceHostFactory
?
私たちの svc ファイルは、カスタムServiceHostFactory
.
アップデート
なんとか実装できたようです。ServiceHostFactory の実装:
ServiceHost の実装:
wcf - WCF サービスを実行しようとすると WcfSvcHost.exe エラーが発生する
Visual Studio 2012 で wcf を実行しようとすると、次のエラーが発生します。
使用法: WcfSvcHost.exe /service:<PathToServiceDLL> /config:<PathToServiceConfig> [/client:<pathToClientApp>][/clientArgs:<argumentsToBePassedToClientApp>]
環境に問題がある可能性があることを示唆するブログをいくつか読みましたが、別のプロジェクトを正常に実行できます。
私の app.configファイルの重要な設定:
別のプロジェクトの私の svcファイル:
何が欠けているのかわかりません。
c# - サービスを維持するための WCF サービスのベスト プラクティス
WPF アプリケーションにいくつかの WCF サービスがあり、次の方法でそれらを開きます。
サービス属性は次のとおりです。
サービスはログ サービスとイベント サービスであり、他のプロセスから多くの呼び出しを受けます。名前付きパイプが最速であり、プロセスが同じコンピューターで実行されるため、名前付きパイプを使用します。
私の質問は、これらのサービスを常に稼働させるにはどうすればよいですか?
- _wcfServicesHolder を反復し、サービスが開いているかどうかを確認するポーリング タイマー
- serviceHost.Faulted イベントに署名します。
また、サービスが障害状態になった後、(別のプロセスで) クライアントを再作成する必要がありますか? または、同じチャネルでメッセージをブロードキャストできますか?
私が受け取る例外は次のとおりです。
c# - app.config の EndpointBehaviour に ErrorHandler を追加する方法
そのため、Spring.net プロキシ オブジェクトを使用していくつかの ServiceHost を立ち上げましたが、すべて問題ありません。xml にカスタム エラー ハンドラを追加したいと考えています。必要に応じて春に立てることができますが、これを行う方法がわかりません。私の app.config は次のとおりです。
コードでそれを行う方法を見つけました:
誰でも私を助けることができますか?
c# - ServiceHost からの変数の設定
私のプロジェクトには、サービス クラスがあります。
ServiceHost
このクラスを使用して、次のように設定しました。
明らかになったかもしれませんが、CentralLogic
クラスのインスタンスを 1 つ作成します。このインスタンスは UI だけでなく、ホストでも使用され、ソリューション内の他のものを管理します。
私が今抱えている問題は、centralLogic
-変数を -class KLAService
(またはhost
) に設定することです。これを行う方法がわかりません。プラグイン Ninject と、サービスにオブジェクトを挿入する方法について読んだことがありますが、それは私のリーグ外であり、簡単な方法があると思わずにはいられません。
どうすれば自分の目標を最もよく達成できますか?
編集: 提案された別の解決策は、ServiceHost を開始し、CentralLogic
その逆ではなく、そこで作成することでした。これは、ServiceHost に何らかのコンストラクターが必要であることを意味します。ベストプラクティスが何であるか、これを達成する方法がわかりません。どんな助けでも大歓迎です。
c# - wcf サービス ホストを開始できません
WCF アプリケーションのサービス ホストを作成しようとしています。アプリを起動すると、次のエラーが表示されます
サービスを開始できません。このサービスにはエンドポイントが定義されていません。構成ファイルにサービスのエンドポイントを少なくとも 1 つ追加してから、再試行してください。
PluralSight のチュートリアルに従いましたが、これが思いついたコードです
IPeopleService.cs
PeopleService.cs
app.config
servicelibrary の app.config