为什么我的WCF wshttpbinding客户端不能在另一台计算机上工作?

本文关键字:一台 计算机 工作 wshttpbinding WCF 我的 客户端 不能 为什么 | 更新日期: 2023-09-27 18:16:07

首先,我在winform中托管我的wcf服务,并尝试使用wsHttpBinding。我的客户端应用程序仅在我的开发计算机中工作。为什么我的WCF wshttpbinding客户端不能在另一台计算机上工作?在另一台计算机上,当我执行服务

时,显示"调用者未通过服务进行身份验证"。以下是我的WCF winform主机配置(app.config):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <connectionStrings>
      <add name="DBCS"
           connectionString="data source=localhost;DataBase=LatihanSP;Integrated Security=SSPI"
           providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="XServerSvcBehavior">
                    <serviceDebug includeExceptionDetailInFaults="true" />
                    <serviceMetadata httpGetEnabled="true" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service behaviorConfiguration="XServerSvcBehavior" name="ServerTier.ServiceClient">
                <endpoint address="" binding="wsHttpBinding" bindingConfiguration=""
                    name="XServerSvcBasicHttpEndPoint" contract="ServerTier.IServiceClient" />
                <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
                    name="XServerSvcMexHttpEndPoint" contract="IMetadataExchange" />
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost:7777/SampleSvc" />
                    </baseAddresses>
                </host>
            </service>
        </services>
    </system.serviceModel>
</configuration>
这是我的客户端app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="XServerSvcBasicHttpEndPoint" />
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:7777/SampleSvc" binding="wsHttpBinding"
                bindingConfiguration="XServerSvcBasicHttpEndPoint" contract="ServiceRef.IServiceClient"
                name="XServerSvcBasicHttpEndPoint">
                <identity>
                    <userPrincipalName value="Kevin-EDP'Kevin" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

我尝试将userPrincipalName值更改为计算机的名称,但我的客户端仍然无法工作,当我执行服务时,它显示"调用者未通过服务进行身份验证"。我真的很确定我的代码是工作的,当我使用basicHttpBinding,当我看一些解决方案在互联网上,大多数人建议使用basicHttpBinding,但这不是我想要的答案,我想使用wsHttpBinding安全原因

帮帮我,伙计们,我被困了快3天了,还是想不出来

为什么我的WCF wshttpbinding客户端不能在另一台计算机上工作?

设置安全模式为none。您可以在WCF服务配置文件

中创建绑定配置元素
<wsHttpBinding>
                <binding name="XServerSvcBasicHttpEndPoint">
<security mode="None"></security>
</binding>
            </wsHttpBinding>

并使用端点标记中的配置,如

<endpoint address="" binding="wsHttpBinding" bindingConfiguration="XServerSvcBasicHttpEndPoint"
                    name="XServerSvcBasicHttpEndPoint" contract="ServerTier.IServiceClient" />

在客户端部分将标识更改为以下格式identity impersonate="true" userName="domain'user" password="password"/>

相关文章: