3

私は他のすべてのソリューションを調べましたが、どれも機能していません。IISを使用してWCFサービスをホストしています。以下は私のweb.config(WCFサービスを追加したときのデフォルト)です。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
      </assemblies>
    </compilation>
    <customErrors mode="Off" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
</configuration>

すべてが順調で、http://www.domain.com/path/service.svchttps://www.domain.com/path/service.svcを使用してブラウザーでwcfサービスにアクセスできます。 Windowsコンソールアプリケーションのhttps://www.domain.com/path/service.svcへのWeb参照であり、以下は私のapp.configにあります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="defaultBasicHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://www.domain.com/path/service.svc" binding="basicHttpBinding" bindingConfiguration="defaultBasicHttpBinding" contract="DomainExt.IExt" name="BasicHttpBinding_IExt" />
    </client>
  </system.serviceModel>
</configuration>

次のコードは、私がサービスをテストするために使用しているものです。

public static String DoPing()
{
     ExtClient client = new ExtClient("BasicHttpBinding_IExt", "https://www.domain.com/path/service.svc");
     return client.DoPing();
}

これを実行すると、次の例外が発生します。

メッセージを受け入れることができるhttps://www.domain.com/path/service.svcでリッスンしているエンドポイントはありませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。

内部例外の状態:

「リモートサーバーがエラーを返しました:(404)見つかりません。」

このサービスはhttpでは正常に機能しますが、httpsでは失敗します。どうすればこれを修正できますか?ASP.NETではなくWindowsコンソールを使用してこのサービスにアクセスしていることに注意してください。ASP.NETはWCFサービスのみをホストしています。

4

1 に答える 1

2

httpGetEnabledではなくhttpsGetEnabled ="true"を設定してみてください

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpsGetEnabled="true" />

編集:SSLを使用しているのになぜBasicHttpBindingを選んだのか興味があります。WsHttpBindingを使用してみませんか?

EDIT2:<services>ホスト構成ファイルにノードがありませんか?クライアントがなければクライアントを作成できないと思います。app.configファイルを右クリックして、そこで構成できます...次のようになります。

    <services>
        <service behaviorConfiguration="MyServiceBehavior" name="MyService">
            <endpoint address="" binding="defaultBasicHttpBinding" bindingConfiguration="basicBinding" contract="IMyService" />

        </service>
    </services>
    <behaviors> 
  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
于 2012-07-12T23:00:50.730 に答える