4

Windows2007SP1サーバーでWCFServiceHostをNTサービスとして実行しようとしています。ServiceHostは、単一のサービスエンドポイントをホストする責任があります:次のアドレスを持つbasicHttpBinding:

http://localhost:5555/ToBlah

このServiceHostをローカルマシン(Windows XP)で実行すると、正常に動作します。SOAPメッセージをPOSTすると、HTTP 202コード(「承認済み」)が返されます。これは、サービスの正しい応答です。契約にはIsOneWay=trueがあります。ただし、これを2007サーバーで実行すると、サービスを呼び出そうとすると503エラーが発生します。WCFメッセージのロギングを「ずっと上」にしたのですが、ロギングがまったく表示されないため、これはWCFよりも低いレベルで発生していると思います(呼び出しがWCFの「レイヤー」に到達することはありません)。 )。

sys-adminsと私はさまざまな形式のhttpcfgコマンドを試しましたが、今のところ運がありません。

これをIISでホストしようとすることが解決策になる可能性があることはわかっていますが、本番アプリサーバーにはIISがインストールされていないため、サービスをServiceHostとして実行したいと思います。

どんなアイデアでも大歓迎です!

4

4 に答える 4

2

それでも、Vistaサーバーで動作させることはできません。それでも503エラーが発生しますが、Windows 2003サーバーでセットアップすることになり、現在は動作しているようです。

このプロセスで私が学んだことの1つは、HttpCfg.exeを使用して、ユーザーが非標準のHTTPポートを開くことができるようにすることでした。

基本的に、次のコマンドのようなものを実行する必要がありました。

httpcfg.exe set urlacl /u http://+:5555/ /a "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)"

次に、次のコマンドを使用してURLACL設定を表示できます。

httpcfg.exe query urlacl

Vistaでは、netshを使用して同じタイプのコマンドを実行できます(以下のリンクを参照)。

悲しいことに、これを理解するのにしばらく時間がかかりましたが、それは良い学習経験でした。

これを理解するのに役立つと私が思ったいくつかのリンクは次のとおりです。

于 2009-02-11T06:45:40.153 に答える
1

WindowsVistaまたはWindows7を使用している場合は、「netsh」を使用する必要があります。これも使いやすいです。

  • ローカルユーザーアカウント:

    netsh http add urlacl url=http://+:8001/ user=ComputerName\Username

  • ドメインユーザーアカウント:

    netsh http add urlacl url=http://+:8001/ user=DomainName\Username

  • 組み込みのNetworkServiceアカウント:

    netsh http add urlacl url=http://+:8001/ user="NT AUTHORITY\NETWORK SERVICE"

于 2012-08-28T08:48:00.643 に答える
1

NTサービスにはどのIDが設定されていますか?問題を特定するには、local-adminアカウントを使用して、この問題が権限に関連しているかどうかを確認してください。

于 2009-02-09T22:22:21.983 に答える
1

サーバー上のファイアウォールまたは別の構成設定がポートをブロックしているようです。

そうでない場合は、ServiceHost オブジェクト インスタンスの作成中またはサービス エンドポイントの作成中に、サービスでエラーが発生している可能性があり、エラーは何らかの理由でトラップされません (?)。サービス コード内に簡単な内部テスト ループを記述して、サービス エンドポイントが正しく作成されたことを確認できます。それは何か興味深いことを明らかにするかもしれません。

さらに、そのサーバーからクライアントを実行し、開発マシンで実行されているサービスに接続すると、さらに何かがわかりますか? ここで参照されているように、WCFTestClient.exe を使用できます: Is it possible to make the WcfTestClient work for custom transport channels? . これにより、追加情報が得られる場合があります。ただし、そのテスト クライアントを使用するには、サービスで MetadataExchange (Mex) をサポートする必要があります。

または、Visual Studio 2008 Samples フォルダーの WCF サンプルを WCFTestClient.exe と組み合わせて使用​​して、最初にサーバー内で、次にサーバーの外部から、自己ホスト型で正しく動作することが期待されるいくつかのサービスをテストすることもできます。

于 2009-02-09T23:04:27.517 に答える