我有一个简单的设置,在机器上运行的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)”
我无法弄清楚这是否是朝着正确方向迈出的一步
答案 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