1

Visual Studio 2010で、自分が作成したWebサービスに接続しようとしています。必要に応じてローカルでデバッグできるように、WebサービスプロジェクトをWPFソリューションに含めようとしていますが、WebサービスをローカルIISに公開して、その方法で接続することもできます。

これが何が起こるかです。WPFソリューションにWebサービスプロジェクトを含めているので、WPFとWCFWebサービスの2つのプロジェクトがあります。[サービス参照の追加]ダイアログボックスを開き、[検出]ボタンをクリックして、WPFプロジェクトにサービス参照を追加しようとしています。アドレスバーに、このURIが表示されます。

http://localhost:49185/MyAppSqlServerProvider.svc

[名前空間]テキストボックスでサービスに名前を付けてから、[OK]をクリックします。次に、次のエラーが表示されます。

System.InvalidOperationException:WSHttpBindingをバインドしているエンドポイントのスキームhttpsに一致するベースアドレスが見つかりませんでした。登録されているベースアドレススキームは[http]です。

これは一般的なエラーのようです。私はそれとそれを修正する方法についてたくさんの投稿を見つけましたが、私はそれらの解決策を私の状況に適用してそれらを機能させることができませんでした。

これが私のweb.configファイルの関連部分です

  <system.serviceModel>
<services>
  <service behaviorConfiguration="MyAppDataSync.MyAppSqlServerProviderBehavior"
    name="MyAppDataSync.MyAppSqlServerProvider">
    <endpoint address="" binding="wsHttpBinding" contract="MyAppDataSync.IMyAppSqlServerProvider" bindingConfiguration="wsHttpBindingConfiguration">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/MyAppSqlServerProvider/"/>
      </baseAddresses>
    </host>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="MyAppDataSync.MyAppSqlServerProviderBehavior">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="wsHttpBindingConfiguration" maxReceivedMessageSize="10485760">
      <readerQuotas maxArrayLength="10485760" />
      <security mode="Transport">
        <transport clientCredentialType="None">
          <extendedProtectionPolicy policyEnforcement="Never" />
        </transport>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

ちなみに、このサービスにはセッションを使用する必要があるため、トランスポートセキュリティを使用しています。(例:[ServiceContract(SessionMode = SessionMode.Required)])

セットアップで間違ったことを誰かにアドバイスしていただければ幸いです。(「49185」ポート番号がローカルホストアドレスに追加されるのはなぜですか?)

あなたが提供できるどんな助けにも前もって感謝します。

4

1 に答える 1

0

「http」ではなく「https」を指定するには、ベースアドレスを変更する必要があります。

于 2012-07-06T15:00:57.087 に答える