2

私の問題のいくつかを説明するかもしれないこれを見つけました-MSDN投稿

コンソールアプリケーション内でホストされる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>

敬具

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 オプションを確認してください。スカイプとあなたのサービスが共存して機能することができます!

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 に答える