問題タブ [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 - IIS7 サイトのルート "/" アプリケーションで NetMsmqBinding を使用して WCF サービスをホストできますか?
NetMsmqBinding を使用して WCF サービスを作成し、Windows Activation Service (WAS) を使用して IIS7 でホストしました。
現在(完全に動作します):
次の IIS でホストされます。http://localhost/MyService/MyService.svc
サービス エンドポイント アドレスの場合:http://localhost/private/MyService/MyService.svc
対応するキュー:.\private$\MyService/MyService.svc
望ましい(何もせず、エラーメッセージも出さない):
次の IIS でホストされます。http://localhost/MyService.svc
サービス エンドポイント アドレスの場合:http://localhost/private/MyService.svc
対応するキュー:.\private$\MyService.svc
MyService IIS アプリケーションを使用すると、すべてが完全に機能します。しかし、「MyService」アプリの代わりにルート「/」アプリを使用してサービスをホストしようとすると、同じセットアップ (コード、IIS セキュリティ、キュー セキュリティなど) は何もしません。イベント ログにエラーはありません。着信メッセージはキューにそのまま残ります。
IIS7 サイトのルート アプリケーションでは、WAS によってアクティブ化されたサービスのホスティングがサポートされていますか?
wcf - キューの WAS ホスティング
キュー エンドポイントをホストする場合、これらすべての名前が一致する必要があることを読みました。
- IIS でホストされます: http://localhost/MyService.svc
- サービス エンドポイント アドレス: http://localhost/private/MyService.svc
- キュー: .\private$\MyService.svc
では、異なるキューへの複数のエンドポイントを持つサービスをどのようにホストできるのでしょうか? たとえば、2 つのキューをリッスンしているサービス… (2 つのエンドポイントを使用)。
wcf - WASで複数のエンドポイントをホストする
WASの下で複数のバインディングエンドポイントを持つサービスをホストすることは可能ですか?たとえば、2つのTCPエンドポイントと2つのメッセージキューエンドポイントを持つサービスですか?
それは可能ですか?
wcf - Windows Activation Service + WCF は COM+ の代わりになるか
WAS の機能
- アプリケーション プーリング
- リサイクル
- アイドルタイム管理
- アイデンティティ管理
- 隔離
COM+ によく似ていますが、IIS 7 でホストされています。このテクノロジを使用している人はいますか? この 2 つを比較して正しいですか?
c++ - BadImageFormatExceptionがWcfSvcHostおよびIISWCFホストで発生しました
Vistax64上のVisualStudio2008でWCFサービスライブラリを作成することは、x86DLLを参照するときに面倒です。32ビットDLLを呼び出すサービスは、64ビットOSで実行するためにx86のプラットフォームターゲットを持っている必要があります。これを行うと、サービスをデバッグしようとしたときにWcfSvcHostがBadImageFormatExceptionをスローします。MS接続に関するバグレポートがあります。私が使用した回避策は、WcfSvcHostを32ビットとしてコアフラグを立てることでした。
マニフェスト問題
私が遭遇した主な問題は、このサードパーティのネイティブ32ビットDLLが特定のWCFホストを使用してロードできないことです。サードパーティのDLLを使用するサービス操作が呼び出されると、次のエラーが発生します。
System.TypeInitializationException:''の型初期化子が例外をスローしました。
.ModuleLoadExceptionHandlerException:C++モジュールのロードに失敗する原因となったプライマリ例外の後にネストされた例外が発生しました。
System.BadImageFormatException:モジュールにアセンブリマニフェストが含まれていることが期待されていました。(HRESULTからの例外:0x80131018)
NestedException:
ハンドルが無効です。(HRESULTからの例外:0x80070006(E_HANDLE))
この例外は、WcfSvcHostの起動時に発生するのではなく、32ビットDLLを参照するサービス操作が呼び出されたときに発生します。非常に興味深いのは、コンソールアプリで同じapp.configを使用してこの同じサービスをホストすることには例外がなく、完全に機能することです。
この例外は、次の直後に発生します。
'WcfSvcHost.exe'(管理対象):ロード済み'C:\ Windows \ WinSxS \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.3053_ none_d08d7bba442a9b36 \ msvcm80.dll '
この場合も、コンソールアプリには例外がなく、同じDLLが読み込まれます。
'ConsoleApp.vshost.exe'(管理対象):ロード済み'C:\ Windows \ WinSxS \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.3053_ none_d08d7bba442a9b36 \ msvcm80.dll '
Microsoft製品サポートからの回答を参照してください。
更新#1:コンソールアプリケーションとWcfSvcHost.exeホストプロセスの両方が、同じセッションとログインユーザー(私)の下で実行されます。WcfSvcHost.exeをサービスのディレクトリにコピーし、手動で起動して同じ結果が得られました。また、Windowsイベントログで追加情報を確認し、sxstraceを使用しましたが、何もログに記録されませんでした。
Process Explorerを実行して、2つのプロセス間で次のことが同じであることを確認しました。
- 画像:32ビット
- カレントディレクトリ
- ユーザー/SID
- セッション
- セキュリティ(グループが拒否され、特権が無効になります)
プロセスモニターを実行し、シンボルを構成すると、WcfSvcHostが次のレジストリとファイルを検索しますが、コンソールホストは検索しません。Process Monitorは大量のデータをログに記録しますが、何を探しているのかわかりません:(。
HKLM \ SOFTWARE \ Microsoft \ Fusion \ PublisherPolicy \ Default \ policy.8.0.msvcm80__b03f5f7f11d50a3a C:\ Windows \ assembly \ GAC_32 \ msvcm80 \ 8.0.50727.3053__b03f5f7f11d50a3a C:\ Windows \ assembly \ GAC_MSIL \ msvc Windows \ assembly \ GAC \ msvcm80 \ 8.0.50727.3053__b03f5f7f11d50a3a
更新#2:これと同じ例外は、サービスがIIS 6 / WindowsServer2003の運用環境でホストされている場合に発生します。
アップデート#3:サードパーティの32ビット.NETアセンブリはStreamBase APIです:
- sbclient.dll(管理対象)
- monitor.netmodule(管理対象)
- dotnetapi.dll(管理されていない)
- pthreads-vc8.dll(管理されていない)
アップデート#4:成功せずにマニフェストを追加:
- dotnetapi.dllとpthreads-vc8.dllにRT_MANIFESTがあることを確認しました。sbclient.dll.NETアセンブリにマニフェストがありませんでした
- GACからsbclient.dllを削除しました
- 検証スキップ用にsbclient.dllを登録しました
- mt.exeを介してsbclient.dllとmonitor.netmoduleの両方にマニフェストを追加しました
- 検証済みのマニフェストが追加され、テスト中に予期されたファイルが読み込まれたことを確認しました(Visual Studio-デバッグモジュールウィンドウを介して)
- 同じBadImageFormatExceptionがBackgroundWorker.OnDoWork()の下でスローされ、呼び出しスタックはdotnetapi.dll ... DefaultDomain.Initalize()への呼び出しを示します。
msvcm80.dllにマニフェストがないことを確認しました。これが、マニフェストがないロードされた唯一のファイルだと思います:)
面白い発見
リフレクターにmonitor.netmoduleをロードすると、次のように表示されます。
'monitor.netmodule'には、アセンブリマニフェストが含まれていません。
エラーが表示されても、Reflectorはマネージコードを分解できます。
.net - net.tcp バインドを使用して WCF サービスをホストしていた WAS
アプリケーションサーバーで使用される一連のコンピューターで計算サービスを公開しようとしています。計算サーバーはステートフルであり、非同期コールバックを実行できる必要があるため、TCP 経由でセッションごとの設定を使用したいと考えています。
サービス アプリケーションは、VS2008 の WCF サービス アプリケーション プロジェクト タイプを使用して構築されました。
たまたま計算サービス マシンが Vista を実行しているので、私が読んだドキュメントによると、WAS ホスティングを使用できるはずです。この件に関する Microsoft の指示に従おうとしています。
しかし、私は早い段階で問題を抱えています。.svc ファイルをアプリケーションの仮想ディレクトリに配置することになっています。しかし、IIS ホスティングを使用していないので、仮想ディレクトリを作成するにはどうすればよいでしょうか? 上記のドキュメントはこれについて明確ではありません。
また、アプリケーションへの net.tcp アクセスを許可するコマンドを実行しようとすると:
何と交換すればいいのかわからない<WCF Application>
。繰り返しになりますが、「IIS でホストされるような」方法でサービスを公開する前のステップが欠落しているようです。
サービスを利用しようとするテスト アプリケーションを作成しました。「サービス参照の追加」をクリックすると、サービスが検出されますが、net.tcp を使用して接続できません。
WAS のホスティングとサービスの利用に成功した人はいますか? 私への指針はありますか?
更新: IIS マネージャー (右クリック -> バインディングの編集...) を使用して net.tcp バインディングを Web サイトに追加しようとしましたが、追加... ダイアログで使用できるプロトコルは http と https だけです。そのリストに net.tcp はありません。はい、非 http アクティベーション コンポーネントをインストールしました...非常に奇妙です。
wcf - WASでのwcfサービスのホスティング
ビスタマシンのWindowsアクティベーションサービス(WAS)でこれをホストする必要があるWCFサービスを作成しました。
WASで私のサービスをホストする方法を教えてください。
また、このクライアントアプリを消費する方法
wcf - Windows Vista で netNamedPipeBinding と WAS を使用して Web アプリケーションで WCF サービスをホストする方法
Vista マシンの Web アプリケーションで netNamedPipeBinding を使用して WCF サービスをホストしようとしています。
この記事で説明されているように、非 HTTP サービスのアクティブ化を有効にしました: http://msdn.microsoft.com/en-us/library/ms731053.aspx
次のようにサービスを構成しました。
.svc ファイル (Visual Studio Web サーバーではなく IIS 上) を参照すると、次のメッセージが表示されます。
WAS を使用してより迅速かつ簡単に展開できることを期待していましたが、この例外は役に立ちません。私が何か間違ったことをしているかどうかを誰かが知っていますか?
wcf - IIS 7 (WAS) で WCF サービスをホストし、2 つの tcp ポートで net.tcp バインディングを使用する
デフォルトでは、IIS 7 Web サイトには "808: " バインディング情報文字列を使用した net.tcp バインディングがあります。「xxx:」で別の net.tcp バインディングを追加すると、例外が発生します。
このコレクションには、スキーム net.tcp のアドレスが既に含まれています。このコレクションには、スキームごとに 1 つのアドレスしか存在できません。パラメータ名:item
この問題を解決し、2 つのポートでサービスをリッスンするにはどうすればよいですか?
wcf - WASまたはIIS7でWCFをホストしますか?
1つのモジュールが別のサーバーにインストールされているサーバーアプリケーションがあり、2つのモジュールが相互に通信するためにWCFを使用したいと考えています。IIS7/WASまたはIISなしのWASのいずれかでWCFをホストするように絞り込みました。プライマリアプリケーションの主な目的は、実際には、受信したデータを処理するtcp / ipソケットベースのサーバーとして機能することです。このタイプのプロジェクトには、IIS7またはWASが最適でしょうか。
WASを使用した場合、WASでホストするコンソールアプリを作成するのは理にかなっていますか?