2016-05-10 5 views
0

WCFサービスを作成し、Windowsサービス経由でホストしたいと考えています。Windowsサービス(TCP)でWCFサービスをホストする際のトラブル

私はここでチュートリアルhttps://msdn.microsoft.com/en-us/library/ff649818.aspx

に応じてすべてのものを作成しましたが、私のWCF services libraryApp.configをです。私はその後、私はWindowsサービスプロジェクトにApp.configファイルをコピーし

<system.serviceModel> 
    <services> 
     <service name="WCFServiceLibrary.Service1"> 
     <endpoint address="" binding="netTcpBinding" bindingConfiguration="" 
      contract="WCFServiceLibrary.IService1"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:3000/Service1" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

をTCPプロトコルを使用してのためにそれを変更しました。 は、私はまた、Windowsサービスのインストーラを追加し、私はプロパティを変更:

StartType - Automatic 
Account - NetWorkService 

は、その後、私はこのプロジェクトを構築し、 が正常に私が追加しようとしているとき、そしてInstallutil WindowsService.exe

を使用してでも、それをインストールサービス(net.tcp:// localhostを:3000 /サービス1)私のWPFClientProject参照

それが表示されます。

URIプレフィックスが認識されません。メタデータには、 が解決できない参照が含まれています: 'net.tcp:// localhost:3000/Service1'。 をnet.tcp:// localhost:3000/Service1に接続できませんでした。接続の試行 は、00:00:02.0641450の時間間隔で続きました。 TCPエラーコード10061:

私はホストがないようです。 私は何が間違っていますか?

Windowsサービスコード

public partial class Service1: ServiceBase 
{ 
    internal static ServiceHost myServiceHost = null; 

    public Service1() 
    { 
     InitializeComponent(); 
    } 
    protected override void OnStart(string[] args) 
    { 
     if (myServiceHost != null) 
     { 
      myServiceHost.Close(); 
     } 
     myServiceHost = new ServiceHost(typeof(Service1)); 
     myServiceHost.Open(); 
    } 
    protected override void OnStop() 
    { 
     if (myServiceHost != null) 
     { 
      myServiceHost.Close(); 
      myServiceHost = null; 
     } 
    } 
} 
+0

サービス参照を追加しようとするとWindowsサービスが実行されていますか?ポート3000でリッスンするものがあることを確認しましたか?サービスホストを起動する場所にWindowsサービスコードを投稿できますか? – Tim

+0

私のWCFクライアントは別のソリューションに配置されています。たぶんそれはその問題の理由ですか? Windowsサービスコードを追加します。 – Destroy

+0

私の個人的な好みはコードからWCFを設定することです、私は入力と実行中にもより良いコントロールを感じます。 –

答えて

0

私はあなたのチュートリアルを以下のように同じ問題がありました。

私はWindowsサービスが実行中であることを検証し、ログイン資格情報のために実行されていないことを確認しました。私はWindowsサービスの資格をローカルシステムアカウントに変更して動作します。

関連する問題