Проблемы с портом 80 с WCF и, возможно, Skype - PullRequest
2 голосов
/ 14 февраля 2011

Обнаружил, что это может объяснить некоторые мои проблемы - MSDN Post

Я написал службу wcf, размещенную в консольном приложении.У меня тогда есть клиент, который взаимодействует с сервисом.

Клиент и сервис отлично работают на моей машине.

Когда я перемещаю клиента на другой компьютер, я могу заставить его работать, но мне нужно выключить брандмауэр как на сервере, так и на клиентском компьютере (я предполагаю, что я могу это исправить, просто открыв порты брандмауэра, чтобыслужбе в конечном итоге нужно будет связаться с?), но я также должен выключить скайп, иначе я получаю «не удалось зарегистрировать 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>

С уважением

Ясень

Ответы [ 3 ]

4 голосов
/ 14 февраля 2011

В конфигурации клиентского приложения отредактируйте привязку, включив атрибут clientBaseAddress.

Ниже приведен пример конфигурации привязки клиентов

 <bindings>
   <wsDualHttpBinding>
    <binding name="wsDualHttpBinding.TimeService" closeTimeout="00:01:00"
        clientBaseAddress="http://localhost:9090/WCF.ServiceClient.TimeService/">
    </binding> 
   </wsDualHttpBinding>
</bindings> 
3 голосов
/ 14 февраля 2011

Skype имеет настройки для отключения использования порта 80, проверьте параметры Skype. Так что скайп и ваш сервис могут сосуществовать и работать!

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

1 голос
/ 14 февраля 2011

Ваш адрес конечной точки должен соответствовать компьютеру / порту / протоколу сервера. Ваша конечная точка в примере подключается к порту 8080.

...