2

发现这可以解释我的一些问题 - MSDN Post

我编写了一个托管在控制台应用程序中的 wcf 服务。然后我有一个与服务交互的客户端。

客户端和服务在我的机器上运行良好。

当我将客户端移动到另一台计算机时,我可以让它工作,但我必须关闭服务器和客户端机器上的防火墙(我假设我可以通过打开服务最终需要与之通信的防火墙端口来解决这个问题?)但我也必须关闭Skype,否则我会收到“无法注册URL http://+:80/temporary_Listen_Address/ ......”“进程无法访问该文件,因为它正在被另一个过程”。

我已经阅读了一些有关更改客户端基址的内容,但无法进行此操作。但是,我可能还缺少其他东西。我有一种感觉,当我将客户端配置中的端点地址移动到与我自己不同的机器上时,我应该更改它,但这破坏了设置,所以我保持不变。

这是我的配置。

服务器

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <wsDualHttpBinding>
        <binding name="WSDualHttpBinding_IDataCollector" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00" />
          <security mode="Message">
            <message clientCredentialType="UserName" />
          </security>
        </binding>
      </wsDualHttpBinding>
    </bindings>
    <services>
      <service name="DataCollector" behaviorConfiguration="defaultProfile" >
        <endpoint address="http://192.168.1.74:8080" binding="wsDualHttpBinding"
          bindingConfiguration="WSDualHttpBinding_IDataCollector" contract="IDataCollector"  />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="defaultProfile">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceCredentials>
            <serviceCertificate findValue="MyServerCert" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My" />
            <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="ConsoleHost.UsernameValidator, ConsoleHost" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

客户

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsDualHttpBinding>
                <binding name="WSDualHttpBinding_IDataCollector" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00" />
                    <security mode="Message">
                        <message clientCredentialType="UserName" />
                    </security>
                </binding>
            </wsDualHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://192.168.1.74:8080/" binding="wsDualHttpBinding"
                bindingConfiguration="WSDualHttpBinding_IDataCollector" contract="AshService.IDataCollector"
                name="WSDualHttpBinding_IDataCollector" behaviorConfiguration="myClientBehavior">
              <identity>
                    <certificate encodedValue="AwAAAAEAAAAUAAAA9fenyF3cSS38ldDDxtUyC8TajBAgAAAAAQAAALgBAAAwggG0MIIBYqADAgECAhD3kPMzVBbXlEAT5S65MldSMAkGBSsOAwIdBQAwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3kwHhcNMTEwMjExMTU0MDMwWhcNMzkxMjMxMjM1OTU5WjAXMRUwEwYDVQQDEwxNeVNlcnZlckNlcnQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ9D8W2GBGvwTAZ2eQj12atxPruZxuOwTCLXRwtEvpnoLmlwBuxo7Wb+of0k4XTNLa7q/Xvjh3zsJbvevlPG3hk9+ugds/Je5X69uPbQApYJO2HZNY9hrwfMZ40iaJ54vVAkdnIhDT5pEpmKVFFkPangk1aMyb6Ilm4NjO9bUxjFAgMBAAGjSzBJMEcGA1UdAQRAMD6AEBLkCS0GHR1PAI1hIdwWZGOhGDAWMRQwEgYDVQQDEwtSb290IEFnZW5jeYIQBjdsAKoAZIoRz7jUqlw19DAJBgUrDgMCHQUAA0EAGT7q1aZwAaJ4sMbv53BOo2/yVSpYkTRIaQwT0uYdY1SLyJ7uaUwqJR0jG+nNqwgyOEOfg4Tz0/dX740dw12+1Q==" />
                </identity>
            </endpoint>
        </client>
      <behaviors>
        <endpointBehaviors>
          <behavior name="myClientBehavior">
            <clientCredentials>
              <serviceCertificate>
                <authentication certificateValidationMode="Custom" customCertificateValidatorType="ConsoleClient.MyX509Validator,ConsoleClient" />
              </serviceCertificate>
            </clientCredentials>
          </behavior>
        </endpointBehaviors>
      </behaviors>
    </system.serviceModel>
</configuration>

亲切的问候

4

3 回答 3

4

在客户端应用程序配置中,编辑绑定以包含 clientBaseAddress 属性。

下面是示例客户端的绑定配置

 <bindings>
   <wsDualHttpBinding>
    <binding name="wsDualHttpBinding.TimeService" closeTimeout="00:01:00"
        clientBaseAddress="http://localhost:9090/WCF.ServiceClient.TimeService/">
    </binding> 
   </wsDualHttpBinding>
</bindings> 
于 2011-02-14T10:59:25.427 回答
3

Skype 有禁用端口 80 使用的设置,请检查 Skype 选项。因此,Skype 和您的服务可以共存和工作!

https://support.skype.com/en-us/faq/FA528/Conflicts-with-applications-such-as-Apache-or-IIS-working-on-port-80-443

于 2011-02-14T10:03:09.020 回答
1

您的端点地址必须与服务器的机器/端口/协议匹配。示例中的端点命中端口 8080。

于 2011-02-14T10:05:11.217 回答