0

私はこれに数日間苦労しています。IIS で WCF サービスをホストしようとしているので、他の Web サイトはこのサービスが公開するデータにアクセスできます。コードを書くのはかなり簡単で、何を試してもうまくいかない設定です。

私が達成しようとしていること:

  1. http(s)://service.motors.coop で http と https の背後にあるサービスを用意します (まだ SSL 証明書はありません)。
  2. .net、PHP、iOS、Android などから呼び出すことができます (ただし、これは構成ベースではないと確信しています)。
  3. http://service.motors.coop/motorsservice.svc/ShowClientIpなどのブラウザ経由でアクセスしてメソッドをテストします。

http://service.motors.coop/motorsservice.svc/ShowClientIpにアクセスしようとすると、次のエラーが表示されます。

' http://service.motors.coop/MotorsService.svc/ShowClientIp 'を含むメッセージは、EndpointDispatcher での AddressFilter の不一致により、受信側で処理できません。送信者と受信者の EndpointAddresses が一致していることを確認してください。

数え切れないほどの記事を読んだり、本を購入したりしましたが、設定オプションが多すぎてどこから始めればよいかわかりません。複雑すぎます。

私の構成ファイルで私を助けてくれる親切な魂はありますか?

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <!-- removed -->
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <customErrors mode="Off"/>
    <httpRuntime/>
  </system.web>
  <system.serviceModel>
<services>
  <service behaviorConfiguration="ServiceBehaviour" name="MotorsWcfService.MotorsService">
    <endpoint address="" binding="webHttpBinding" bindingConfiguration="" name="MotorsServiceEndpoint" contract="MotorsWcfService.IMotorsService"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>
<bindings>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" httpsGetUrl="https://service.motors.coop/MotorsService"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="EndpointBehavior">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false"/>

更新:ウィザードを使用して構成を作成した後、次のファイルが作成されました。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
    <standardEndpoints>
        <webHttpEndpoint>
            <standardEndpoint name="WebHttpEndPoint" defaultOutgoingResponseFormat="Json" />
        </webHttpEndpoint>
    </standardEndpoints>
    <behaviors>
    <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
            <serviceMetadata httpGetEnabled="true" />
        </behavior>
    </serviceBehaviors>
    </behaviors>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding" />
        </basicHttpBinding>
        <webHttpBinding>
            <binding name="WebHttpBinding" />
        </webHttpBinding>
    </bindings>
    <services>
        <service name="MotorsWcfService.MotorsService" behaviorConfiguration="MyServiceTypeBehaviors" >
            <endpoint address="http://service.motors.coop" binding="webHttpBinding"
                bindingConfiguration="WebHttpBinding" contract="MotorsWcfService.IMotorsService" />
            <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
        </service>
    </services>
</system.serviceModel>

ただし、まだこのエラーが発生します。

' http://service.motors.coop/MotorsService.svc/ShowClientIp 'を含むメッセージは、EndpointDispatcher での AddressFilter の不一致により、受信側で処理できません。送信者と受信者の EndpointAddresses が一致していることを確認してください。

4

1 に答える 1