問題タブ [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.
c# - WCF 通信エラーがランダムに発生し、原因を突き止められない
通信インターフェイスとして WCF を使用するアプリケーションがあります。しばらくして、クライアントが ServiceHost を呼び出し、次のエラーが発生しました。
サーバーが開始したシャットダウンにより、出力セッションが自動的に閉じられたため、このチャネルを使用してメッセージを送信することはできなくなりました。DispatchRuntime.AutomaticInputSessionShutdown を false に設定して自動クローズを無効にするか、リモート サーバーでシャットダウン プロトコルを変更することを検討してください。
1か月の調査の後、私は少し解決策がありません。
serviceHost がタイムアウトし、例外が処理されないと思います。それは私のserviceHostを閉じます。したがって、メッセージは問題の直接の原因ではなく、WCF ServiceHost からエラーをデバッグまたは処理する方法がわかりません
c# - ユニットテストでServiceHostでOpen()が呼び出されたことを確認するにはどうすればよいですか?
2つのWCFサービスを開いているWindowsサービスがあります。OnStart()の単体テストを行い、service1.Open()とservice2.Open()が呼び出されていることを表明したいと思います。OnStart()は次のようになります。
私はコンストラクターのオーバーロードにサービスを注入しています:
私はRhinoMocksを使用して、次のようなServiceHostBaseのスタブを生成しています。
テストでOnStart()を呼び出すと、service1.Open()を呼び出すときにnull参照例外が発生します。その時点でservice1がモックオブジェクトであり、nullをスローしているのはOpen()であることを確認しました。Open()が実際にはSystem.ServiceModel.Channels.CommunicationObjectのメソッドであることを知っており、それもスタブまたはモッキングを試しましたが、それでもオブジェクト参照エラーが発生します。これは仮想メソッドではないため、モックバージョンによってオーバーライドされていないだけだと思いますが、Expectationを設定しようとするとreportservice.Stub(r => r.Open())
、実際のCommunicationObjectを実行しているかのように、デフォルトのタイムアウトがないという別の例外が発生します。 null参照をスローするRhinoMockyの代わりにOpen()メソッド。
つまり、ユニットテストでServiceHostでOpen()が呼び出されていることを確認する方法についてのヘルプを探しています。=]
wcf - ServiceHost によって保持されているラージ オブジェクト ヒープの Byte[] を削除する方法
HTTPプロトコルを使用するWCFサービスがあります。特に大きなクエリがシステムにヒットすると、大きな Byte[] が作成され、バッファを経由して HttpChannelListener に到達し、最終的にサービス ホスト自体に到達します。これは、WCF トランザクションが完了した後もそのままです。これにより、ラージ オブジェクト ヒープの断片化が発生し、最終的にアプリケーションで OOM 例外がスローされます。
Byte[] へのパスは次のとおりです: ServiceHost.channelDispatchers.items._items[0].listener.innerChannelListener.typedListener.bufferManager.innerBufferManager.bufferPools[13].pool.globalPool.items._array[0]
システムは、トランザクションにバッファーされた WCF 通信を使用して、信頼性を確保します。
これらの大きなオブジェクトがメモリに残るのを防ぐためにできることはありますか?
c# - チャネル ファクトリを正しく閉じる方法は?
channelFactory を正しく閉じる方法を知りたいです。実際、私は使用しています:
しかし、ServiceHost 側では、未処理の例外がドメイン レベル (アプリのトップ レベル) に到達します。サービス ホストが例外をキャッチせず、構成した IErrorHandler で例外を処理しない理由がわかりません。
これは、ErrorHandler を構成する方法です。
c# - WCF-カスタムUserNameSecurityTokenAuthenticatorのValidateUserNamePasswordCore()メソッドが呼び出されない
独自のServiceCredentialsプロバイダーを定義しました。
ServiceHostを起動すると、そのプロバイダーはCreateSecurityTokenManager()メソッドでカスタムSecurityTokenManagerを生成します。
PasswordSecurityTokenManagerクラス:
インスタンスは、 CreateSecurityTokenAuthenticator()メソッドでカスタムSecurityTokenAuthenticatorを生成します。
生成されたインスタンスは、カスタムCustomUserNameSecurityTokenAuthenticatorです。
問題は、上書きされたValidateUserNamePasswordCore()メソッドがいつでも呼び出されないことです。
カスタムIAuthorizationPolicyプロバイダーPasswordAuthorizationPolicyで、 Evaluate()メソッドのEvaluationContextにカスタムプリンシパルを設定したいと思います。
ただし、upperメソッドが呼び出されない場合、追加のIAuthorizationPolicyアイテムを定義することはできません。
ここで何が間違っているか、欠けていますか?
XMLを使用してサービスを構成することはありません。これはC#コードで100%実行します。
編集:コードは次のブログ記事に基づいています:http://www.neovolve.com/post/2008/04/07/wcf-security-getting-the-password-of-the-user.aspx
wcf - Ninject を使用して Azure にデプロイすると WCF サービスが失敗する
今朝から次のエラーが発生しています:(
要求されたサービス 'http://10.175.156.xx:yyyyy/SomeService.svc' を有効にできませんでした。詳細については、サーバーの診断トレース ログを参照してください。
Azure でサービス ログを開くと、次の警告とエラーが表示されます。
W: Ninjet.Extensions.Wcf.NinjectIISHostingServiceHost`1[MyNameSpace.Servicelayer.SomesSrvice を開くことができませんでした W: Ninject.Extensions.WCf.NinjectIISHostingServiceHost[MyNamespace.ServiceLayer.SomeService] で障害が発生しました
時折、次のエラーに続いて上記の警告が表示されることがあります。
E: サービスのパフォーマンス カウンターの読み込みに失敗しました。このサービスでは、パフォーマンス カウンターは使用できません。インスタンス 'SomeService@||SomeService.svc' は既に CounterSet 'e829b6db-21ab-453b-83c9-d980ec708edd' に存在します。パラメーター名: インスタンス名
先週は問題なく動作しており、Azure に変更は見られません。
ところで、ローカルでは問題なく動作します。
編集:私はまだ自分の質問に答えることができないので、「解決策」を含めるように投稿を編集しています:(
「よし!問題にいくつかの参照が欠けていたようです:(
クラス ライブラリ プロジェクトを WCF プロジェクトに追加しましたが、そのクラス ライブラリは MVC 4 を参照しています。
servicehost - データベース情報からサービスの動作を設定する必要があるカスタム ServiceHost
カスタム サービス ホストを作成しましたが、オーバーライドApplyConfiguration()
はうまく機能しますが、サービスの動作を追加する方法が見つかりません。
すべてのサービス モデルが構成ファイルから削除され、セットアップがデータベースから取得されます。
エンドポイントは問題なく動作します。
サービスの振る舞いは苦痛です。に を追加しようとしServiceBehaviorElement
ましたSystem.ServiceModel.Configuration.BehaviorsSection
が、読み取り専用であり、これを回避できません。
に動作を追加しようとしましたservicehost.Description
が、そこに完全な動作要素を追加することはできません。名前属性があり、動作のグループを持つことができる場所です。
どんな助けでも素晴らしいでしょう。
c# - C# で ServiceHost の maxRequestLength/executionTimeout を増やす
サーバー上で実行されている winForms アプリケーションがあり、ServiceHost
.
問題は、クライアントが取得したいデータがServiceHost
大きすぎる場合、次のような例外が発生することです。
受信中にエラーが発生しました。原因は http プロトコルを使用していない可能性があります。
どうすればこれを解決できますか? これが Web アプリケーションの場合、web.config で maxRequestLength/executionTimeout を増やすだけです。しかし、winforms プロジェクトには web.config がありません。
編集:ここにいくつかのコードがあります:
rest - PHPRESTAPIのホスティングサービスとスケジュールされたサービス
PHPを使用してRESTAPIを実装しました。MySQLデータベースへのこのAPIアクセス。
私はホスティングサービスを探していましたが、どこから始めればよいかわかりません。このタイプのサービスの大部分はWebホスティングを参照していますが、私が理解しているように、これは私が必要としているものではありません。
誰かが私の要件をサポートする無料または安価なサービスを提案できますか?また、RESTAPIに定期的にアクセスするサービスをスケジュールする可能性も必要です。ホスティングサービスで通常どのような言語/フレームワークがサポートされているのかわからないため、これはまだ実装されていません。
どんな助けでも本当にありがたいです。
wcf - WCF: ServiceHost から作成したインスタンスの参照を取得する方法 (WCF 4.5)
サーバー側のコンソール プログラムでは、複数の ServiceHost オブジェクトが作成され、シングルトンではなく PerSession モードで動作します。したがって、新しいセッションが開始されると、新しいサーバー側オブジェクトが作成されます。
問題は、新しく作成されたサーバー側オブジェクトにリンクされた正しい ServiceHost オブジェクトをどのように知ることができるかということです。今後の操作のために、このリンク情報が必要です。
新しく作成されたサーバー側オブジェクトから ServiceHost 情報を取得できますか? それを別のインターフェースまたはクラスに変換することによって?または、ServiceHost のインスタンス作成処理を引っ掛けることはできますか?
何か案が?
どうもありがとう。