WCF服务未在非开发机器上运行

时间:2012-12-03 06:04:48

标签: c# wcf windows-services metadata

我已经使用了这个MSDN教程,介绍了如何使用Windows服务作为主机让WCF使用net.tcp绑定:

http://msdn.microsoft.com/en-us/library/ff649818.aspx

由于回调,我需要nettcp,并且不希望将IIS用作主机。

本教程在我的计算机上100%工作,我使用自己的项目名称和方法等完成了第二个版本,这在我的计算机上也可以100%运行 - 从VS2010运行时和使用InstallUtil时运行作为一项服务。

我下载了Juval Lowy的元数据资源管理器并在我的计算机上运行它并找到了该服务。 (来自www.idesign.net

我不能让它在另一台计算机上工作 - 即生产服务器。我也尝试在备用电脑上安装,看看这是否与服务器有关。然而,这些都没有VS2010,这应该不重要,因为我作为Windows服务运行。

我从我的vs2010项目中复制/bin/Release文件夹,并将其放在名为myapp的文件夹中的另一台计算机上。我在服务exe上运行InstallUtil(就像我在我的计算机上一样)并安装得很好。我还更改了该文件夹的权限,以授予NETWORK SERVICE完整权限。

然后,我在控制面板,管理服务,服务中启动该服务。我已登录到数据库,并验证服务进程是否已启动。我无法判断WCF托管服务是否启动。

每当WCF托管服务启动时,在我的计算机上,我会收到一个气球通知和一个窗口,我可以查看mex地址等。当我安装到其他计算机上时,这不会发生。

我在目标计算机上安装了Juval Lowy的元数据资源管理器,但是它使用与我在计算机上完全相同的地址来声明无效地址(即引用localhost而不是IP地址)。

我认为我的方法安装在其他计算机上有问题。

相关代码是:

if (myServiceHost != null)
            myServiceHost.Close();

myServiceHost = new ServiceHost(typeof(MyAppService));
myServiceHost.Open();

app.config

<system.serviceModel>
<services>
   <service behaviorConfiguration="netTCPBehavior" name="MyAppDll.MyAppDll">
      <endpoint 
          address="" 
          binding="netTcpBinding" bindingConfiguration=""
          contract="MyAppDll.IMyAppDll">
         <identity>
            <dns value="localhost" />
         </identity>
      </endpoint>
      <endpoint 
          address="mex" 
          binding="mexTcpBinding" bindingConfiguration=""
          contract="IMetadataExchange" />
         <host>
            <baseAddresses>
               <add baseAddress="net.tcp://localhost:7200/MyAppDll" />
            </baseAddresses>
         </host>
      </endpoint>
   </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="netTCPBehavior">
      <serviceMetadata httpGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
</system.serviceModel>

我哪里错了?

1 个答案:

答案 0 :(得分:0)

您可能需要启用Net.TCP Port Sharing Service

  

Windows Communication Foundation(WCF)   使用名为的Windows服务   Net.TCP端口共享服务   促进TCP端口的共享   跨多个流程。这个   服务是作为WCF的一部分安装的,   但该服务未启用   默认为安全预防措施   所以必须在之前手动启用   第一次使用。