Windowsサービス内でWCFサービスをホストするのに問題があります。 私はVS2008で私のWCFサービスを開始することができますし、私のapp.configをでベースアドレスにWindowsサービス内でWCFサービスをホストする
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="WCF.IndexerBehavior"
name="WCF.Indexer">
<endpoint address="" binding="wsHttpBinding" contract="WCF.IIndexer">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/WCFService/Action/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WCF.IndexerBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
をナビゲートすることによって、私はそれが正常に動作します見ることができ、私はどのように上のサービスやコードサンプルを作成したと言ってページを取得します使用してください。
私の次のステップは、上記のWCFをホストするWindowsサービスを作成することでした。
私はちょうど窓のサービステンプレートを使用して、それは私にWindowsServiceHost.csに名前を変更したProgram.csとService1.csを与えました。それで私は持っています:
私はInstallUtil(私はインストーラを定義しました)を実行することができます。 すぐに開始して停止するのに使用されたサービスは、Windows Defenderを無効にしてこれを取り除きました。 サービスは(ネットワークサービスとして)開始し、私は考えていますが、ベースアドレスに移動すると、見つからないページが表示されます。
エラー1061:サービスは、私は午前以外のすべてを試した
現時点でコントロールメッセージを受け付けることができませんが もう一つ奇妙なことは、私は(まだ実行中として表示される)サービスを停止しようとすると、私が手であります途方に暮れて。
サービスは、コマンドライン、つまり自己ホストアプリケーションとして実行できるスタンドアロンの実行可能ファイルとして実行されますか?あなたが説明する方法でWindowsサービスとして実行する前に、これを動作させる必要があります。 この種の問題をデバッグするには、コードの残りの部分が実行される前にVisual Studioデバッガをサービスプロセスにアタッチできるように、OnStartに時間遅延を導入すると便利です。また、例外をWindowsイベントログに取り込むのではなく、そのイベントログに記録することもできます。 –