本地服务(服务器已拒绝客户端凭据。)

时间:2010-05-21 10:55:41

标签: wcf

我有一个简单的设置,在机器上运行的WPF应用程序和在同一台机器上的Windows服务中托管的WCF服务(总是在同一台机器上)。当我在一台计算机上调试时,我可以轻松访问本地WCF服务。当我在另一台机器上运行时,我收到一个错误:

“服务器已拒绝客户端凭据。”

我的一些观察是,在我的本地机器上我没有域/网络。它是我的家用机器。在客户站点时,它将无法运行,并给出上述错误。任何人都对这些计算机上的不同之处有任何想法吗?

/布赖恩

修改

合同:

[ServiceContract(Namespace = "http://www.greenweb.dk/motiondetection")]
    public interface IMotionDetection
    {
        [OperationContract]
        bool GetMotionDetected();
    }

App.Config中

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings />
    <client />
    <services>
      <service name="GreenWebPlayerMotionDetectionService.MotionDetected" behaviorConfiguration="MotionDetectionBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="net.pipe://localhost/GreenWebMotionDetectionService/"/>
          </baseAddresses>
        </host>
        <endpoint address="" contract="GreenWebPlayerMotionDetectionService.IMotionDetection" binding="netNamedPipeBinding"/>
        <endpoint address="mex" contract="IMetadataExchange" binding="mexNamedPipeBinding"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MotionDetectionBehavior">
          <serviceMetadata httpGetEnabled="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel> 
</configuration>

编辑2 安全性不会成为问题,不需要安全性,运行它的计算机已经与其他所有计算机隔离开来。

EDIt 3 在客户端和服务器上都设置了<security mode="None"></security>,现在我收到此错误:“从管道读取错误:无法识别的错误109(0x6)”

我无法弄清楚这是否是朝着正确方向迈出的一步

2 个答案:

答案 0 :(得分:1)

问题似乎是安全性。我没有将None设置为“EncryptAndSign”。然而,当主机是Windows服务时,这还不够。我放弃了Windows服务方法并将其托管在Windows应用程序中 - 然后立即工作......去图!

答案 1 :(得分:0)

问题在于

  

netNamedPipeBinding

。此绑定用于在机器内部进行通信。请检查链接。它是在机上。

如果要在两台使用.net的机器之间进行通信,请选择net.tcp。如果要在.Net和Java应用程序之间进行通信,请使用basicHttpBinding。

http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx