問題タブ [was]
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診断トレースとWASホスティング?
IISAppPoolユーザーアカウントで実行されているnet.tcpを使用するように構成されたWASホストサービスのセットがあります。WASでサービスをホストしているとき、問題を追跡するためにそれらから診断トレースを取得するのに苦労しています。トレース出力としてc:\ logs \ trace.svclogを使用するように設定されたトレースを使用した同じサービスは、コンソールアプリケーションでセルフホスティングを使用する場合に正常に機能します。
WASでホスティングしているときにトレース出力がまったく得られないようですが、WASでトレース出力を取得するために必要な特別な設定はありますか?トレース用の固定出力パスを設定し、IIS AppPool\MyAppPool-userのフォルダーにアクセス許可を割り当てました。
/サルミあたり
wcf - 非 HTTP プロトコル アプリケーション用の Elmah または HttpContext のない Elmah
私たちは 3 層アプリケーションに取り組んでおり、最新かつ最高のもの (MVC2、IIS7.5、WCF、SQL2k8 など) を使用することが許可されています。アプリケーション層は、WCF サービスによってさまざまな Web アプリケーションに公開されます。サービス側とクライアント側の両方を制御するため、HTTP よりもパフォーマンス上の利点がある net.tcp バインディングを使用することにしました。
Web アプリとサービスの両方で、エラー ログにELMAHを使用したいと考えています。これが私の質問です。WCF での ELMAH の使用に関する情報はたくさんありますが、すべて HTTP バインディングに関するものです。非 HTTP エンドポイントを公開する WCF サービスで ELMAH を使用できるかどうか、またはその方法を知っている人はいますか?
ELMAH は、web.config でAspNetCompatibilityEnabledフラグを true にする必要がある HttpContext を必要とするため、私の推測ではノーです。MSDNから:
IIS 7.0 と WAS により、WCF サービスは HTTP 以外のプロトコルを介して通信できます。ただし、ASP.NET 互換モードが有効になっているアプリケーションで実行されている WCF サービスは、HTTP 以外のエンドポイントを公開することは許可されていません。このような構成では、サービスが最初のメッセージを受信したときにアクティベーション例外が生成されます。
HTTP 以外のエンドポイントを持つ WCF サービスで ELMAH を使用できないことが本当である場合、フォローアップの質問は次のとおりです。HttpContext を必要としないような方法で ELMAH を使用できますか? または、より一般的に (薄い金属定規エラーをコミットしないように)、HTTP 以外のエンドポイントを持つ WCF サービスで ELMAH を使用する方法はありますか?
注: Elmah のソース コードをダウンロードして変更し、shim を追加したり、HttpContext の依存関係を削除したりできることは承知していますが、コードのフォークは避けたいと考えています。
wcf - restart/iisreset は NET.TCP プロトコルを無効にしますか?
Windows Server 08、sp2 の IIS7 で WCF サービスをホストしています。サービスは独自の Web サイトとしてホストされ、NET.TCP エンドポイントを介して公開されます。サービスは、restart/iisreset コマンドが発行されるまで完全に機能します。
再起動または iisreset の後、サービス呼び出しを行うと、「System.ServiceModel.EndpointNotFoundException: サービスがエンドポイント アドレス 'net.tcp://[website]/[ service_name].svc' は、アドレスのプロトコルでは使用できません..'
サーバーのイベント ログに次のエラーが表示されます: 例外: System.ArgumentException メッセージ: プロトコル ID 'NET.TCP' が不明です。StackTrace: System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel(String protocolId, IListenerChannelCallback listenerChannelCallback) で '
質問: これを修正するにはどうすればよいですか? iisreset 後に NET.TCP プロトコルが無効になるのはなぜですか? バグですか?いくつかの構成がありませんか?
IIS セットアップの詳細: - Server 08 および 08 R2 - バインディング: http、NET.TCP (808:*) - EnabledProtols: http、NET.TCP。- サイトの appPool の ID が特定のユーザーに設定されている。
ここで入手可能なサンプル コード: http://drop.io/wcfTcpSampleService
ありがとう
wcf - WAS がホストする WCF サービスで単一の契約に複数のエンドポイントを使用できますか?
WAS がホストするサービスで、異種環境の単一のコントラクトに対して複数のエンドポイント (たとえば、basicHttpBinding を使用するものと netTcpBinding を使用するもの) を公開する必要がある場合、どうすればよいでしょうか?
エンドポイントの WAS 構成について私が読んだことはすべて、エンドポイント アドレスとホスト ベース アドレスを空白のままにする必要があることを示しています。これは、WAS が .svc ファイルへのパスとプロトコルを介してアドレスを自動的に解決することになっているためです。
ただし、アドレスを説明せずに同じコントラクトに HTTP エンドポイントと TCP エンドポイントを定義することは不可能のようです。これまでの私のすべての試みは、切望されていた「バインディングインスタンスは既にリッスンするために関連付けられています」というエラーを私にもたらしました。
アイデア?
ありがとう
c# - アプリケーションプールの開始/リサイクル時にWindowsProcessActivation Service(WAS)アプリケーションを自動開始するようにIIS7を構成できますか?
IIS 7.5では、自動起動プロバイダーの概念が導入されています。これにより、アプリケーションプールの起動時にWASでアプリケーションまたはアセンブリを自動ロードできます。
IIS7でも同様のことができますか?
基本的に、WASで実行され、データのメモリ内キャッシュを備えたアプリケーションがあります。アプリケーションプールのリサイクルが発生すると、WASでデプロイされたアプリは、最初のヒットが受信されるまで実際にはアクティブ化されません。これは、最初のヒットを受信したときにキャッシュがコールドであることを意味します。アプリプールがリサイクルされたらすぐにアプリケーションを事前に開始できると便利です。
検討したその他のオプションは次のとおりです。
アプリケーションをWindowsサービスとして展開して、再利用されないようにします(これは機能しますが、IIS / WASのアプリケーションライフサイクル管理は、この問題とは別に便利です)
アプリケーションをウォームアップするためにpingを実行することを目的とした別のサービスを作成します。
ただし、最も良い方法は、IIS7/WASにこれを実行させることです。
iis-7 - WAS アクティベーション用のカスタム メッセージ キュー リスナーを実装するにはどうすればよいですか?
.Net 4.0 Web ソリューション (IIS7、WS2008) のコンポーネントを作成しており、メッセージ キューからメッセージを消費できるサービスを提供する必要があります。MSMQ を使用して WAS サービスのアクティブ化を構成するためのセットアップ例を見つけました... しかし、MSMQ を (RabbitMQ を使用して) 使用していないため、何らかの独自のリスナーを実装する必要があると確信しています。
私の問題は、セットアップする必要がある構成設定のシステムがかなり不透明であり、ドキュメントが明確ではないことだと思います。
A: WAS サービスをアクティブ化するためのカスタム リスナーを実装および構成するにはどうすればよいですか。
および B: このセットアップの残りの部分を構成するためのアドバイスは素晴らしいものです。
ありがとう
.net - SOA の多くの WCF サービスを効果的に管理/ホストする方法
私の現在のアーキテクチャは SOA にぴったりです。
サービスは WCF を使用して作成され、すべてが .NET です (相互運用性は必要ありません)。
まず、ServiceHost を使用して Windows サービス内で WCF サービスをホストしていました。
しかし現在、サービスの数が増えているため、それらを別の Windows サービスとして使用するという選択を再検討しています。
「WAS」を使用してIIS内でそれらをホストできることを知っています。しかし、私は長所と短所について確信が持てません。(これはすべて管理に関するものなので、パフォーマンスやスケーラビリティを向上させようとしているわけではありません)。
以前、WebMethods などの SOA "ソリューション" を使用したことがあります。開発経験はひどいものでしたが、BPM、ステート マシンの監視、メッセージのログ記録、リプレイなどに沿って無料で入手できる優れたコンセプトと機能がいくつかありました。Windows と .NET でこれらの線に沿った軽量なものがあるのだろうかと思います。 . WCF、MSMQ、IIS などを実際にまとめるもの。
wcf - WCFを使用したDI-WASホスティングを使用する場合、Windsor Containerはどこで初期化できますか?
WCFサービスで依存性注入を使用する方法についての優れた記事を読んでいました。残念ながら、WindsorContainerをインスタンス化してglobal.asaxファイルに登録する方法のみを示しています。ホスティングにWASを使用したいので、global.asaxは呼び出されません。コンテナをどこに登録すればよいか誰か知っていますか?WindsorServiceHostFactoryを拡張する必要がありますか?
wcf - WCFサービスとlog4netをホストしていました
log4netを使用してアプリケーションをログに記録しようとすると、問題が発生します。私のアプリケーションは、WCFサービスとそれに接続するクライアントで構成されています。クライアント側でのロギングは問題ではなく、すべてが完全に機能します。
これが私のサーバーサイドの作り方です:
- WCF dll。これには、サービスのコントラクトと基本実装(エラー処理を含む)が含まれています。実際の操作は別のビジネスレイヤーで行われ、実装によってキャッチされた(そしてFaultContractsを使用して返送された)必要な例外がスローされます。
- データレイヤー(ここでは問題ありません)。
- ラッパーログメソッドを含む「Utils」ライブラリ。
私のlog4net.configファイルは次のとおりです。
したがって、ビジネスレイヤーでエラーが発生すると、エラーがキャプチャされ、ログに記録され、FaultExceptionに変換されます。問題があります。ログファイルは作成されません。グーグルでいくつかの手がかりを見つけました(アクセス権は一般的ですが、ProcMonを使用しましたが、目的のファイルまたはディレクトリへの呼び出しが見つかりませんでした)。
私は今少し迷っています、私は何を試すべきかわかりません。
Visual Studioで「publish」コマンドを使用してサービスを公開しているので、サーバーにはアプリケーションディレクトリがあり、その中にsvcファイル、web.configファイル、そしてlog4netを含むすべてのdllを含むbinディレクトリがあります。 dll、およびlog4net.config。その構成ファイルをアプリケーションのルートにコピーしようとしましたが、成功しませんでした。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
また、ステートメントをWCFのAssemblyInfo.cs(元々はUtilsのAssemblyInfo.csにありました)に配置しようとしました
が、成功しませんでした。
助けてくれてありがとう、どんなアイデアでも大歓迎です!
wcf - tcp バインディングと複数のポートを使用して単一サイトの IIS で WCF サービスをホストする
net.tcp バインディングを使用して IIS でホストされている WCF サービスにパフォーマンスの問題があります。
最近、システムを COM+ から WCF に移植したところ、テストでパフォーマンスの低下が示されました。サーバーのパフォーマンス カウンターを調べていて、CPU 使用率が非常に低い (< 10%)、使用可能なメモリが十分にある、ディスクの読み取りが正常であるなど... WCF パフォーマンス カウンターと未処理の数も確認しました呼び出し数が少なく (任意の時点で最大 1 回)、1 秒あたりの呼び出し数が非常に少ない (システムで最も使用されているサービスに対して 1 秒あたり 16 回の呼び出し)。当社のすべてのサービスは、呼び出しごと、シングル スレッドになるように構成されています...
私はすでにスロットリングをいじり、すべての設定のすべての値を 100 に設定しました (サーバーは 8 コアのマシンであり、実際のスロットリング値は、設定した値に CPU の数を掛けたものになると理解しています)。そこに問題はないと思います。
また、クライアントがその接続を効率的に使用していることも確認しました (使用できる既存の tcp 接続がある場合は、新しい接続を作成しません)。
現在の Web アプリケーションは約 50 のサービスをホストしており (そう、50 です!)、現時点では、これを問題の原因から排除しようとしています。複数のWebアプリケーションでサービスをホストすることを検討しており、それらに異なるポートを使用させたいと考えていますが、それに関していくつかの問題があり、インターネット上で段階的な手順がどこにも見つからないので、期待していますここの誰かが私を助けることができるでしょう:)
これまでに試したことは次のとおりです
。1) IIS の既定の Web サイトに別のバインドを追加しました (つまり、2 つの net.tcp バインドがあり、1 つは "808:*" バインド情報を使用するように設定されており、もう 1 つは "809:*" を使用します) 2) これらのポートがファイアウォールを通過できることを確認しました
3) 次に、ポートをフィルタリングするように個々の Web アプリケーションを構成しようとしました (これは Web.ポート 808 を使用する構成):
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="net.tcp//<servername>:808"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
このサービスに接続しようとすると、The service at the endpoint address 'net.tcp://<servername>/SomeService.svc' is available for the protocol of the address が表示されます
<serviceHostingEnvironmentgt; を削除すると、少し。ここで何が間違っていますか?
他のサービス、たとえば、ポート 809 で使用できるようにしたいサービスがまったく使用できません。エンドポイントが存在しないというエラー メッセージが表示されます。IIS がそのポートでリッスンしていないようです。すでに述べたように、ファイアウォールはこのポートの通過を確実に許可します。
このように多くのサービスがホストされている場合に最適なセットアップについてのアイデアや提案をいただければ幸いです。
ありがとう!