42

https://mywebsite/MyApp/Myservice.svcにアクセスすると、次のエラーが表示されます。

( http:// を使用するとリンクが機能します)

"コンパイル中に例外が発生したため、サービス '/MyApp/MyService.svc' をアクティブにできません。例外メッセージは次のとおりです。BasicHttpBinding をバインドするエンドポイントのスキーム https に一致するベース アドレスが見つかりませんでした。登録されたベース アドレス スキームは [http ]..

編集:だから、次に変更address=""するとaddress="https:// ..."、代わりにこのエラーが発生します:

エラー: プロトコル 'https' はサポートされていません..... コントラクト '"Annotation"' を持つ ' https://.../Annotation.svc ' の ChannelDispatcher は、その IChannelListener を開くことができません。

これが私のWeb.Config見た目です:

<services>
      <service behaviorConfiguration="AnnotationWCF.AnnotationBehavior"
              name="AnnotationWCF.Annotation">
              <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Annotation"
                      contract="AnnotationWCF.Annotation" />
              <endpoint address="" 
                  binding="basicHttpBinding" bindingConfiguration="SecureTransport"
                  contract="AnnotationWCF.Annotation" />
              <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>

<bindings>
<basicHttpBinding>
    <binding name="BasicHttpBinding_Annotation" maxBufferSize="2147483647"
            maxReceivedMessageSize="2147483647">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
    </binding>
    <binding name="SecureTransport" maxBufferSize="2147483647"
            maxReceivedMessageSize="2147483647">
        <security mode="Transport">
        <transport clientCredentialType="None"/>
        </security>
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
    </binding>
</basicHttpBinding>
4

7 に答える 7

31

私はこれとまったく同じ問題を抱えていました。私の解決策を除いて、バインディング値に「s」を追加することでした。

旧: binding="mexHttpBinding"

新規: binding="mexHttpsBinding"

web.config スニペット:

<services>
    <service behaviorConfiguration="ServiceBehavior" name="LIMS.UI.Web.WCFServices.Accessioning.QuickDataEntryService">
        <endpoint behaviorConfiguration="AspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" 
            contract="LIMS.UI.Web.WCFServices.Accessioning.QuickDataEntryService" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
    </service>
于 2011-05-26T03:20:48.233 に答える
20

私の問題は、SSLを処理するためにロードバランサーを使用していたことが判明し、それがhttp経由で実際のサーバーに送信され、その後不平を言いました.

修正の説明はこちら: http://blog.hackedbrain.com/2006/09/26/how-to-ssl-passthrough-with-wcf-or-transportwithmessagecredential-over-plain-http/

編集:マイクロソフトのサポートに相談した後、わずかに異なる問題を修正しました。

私の Silverlight アプリのコードには、https 経由でロード バランサーに送信されるエンドポイント アドレスが含まれていました。その後、ロード バランサーはエンドポイント アドレスを http に変更し、実際のサーバーを指すようにしました。したがって、各サーバーの Web 構成で、https ではなく http であるエンドポイントの listenUri を追加しました

<endpoint address="" listenUri="http://[LOAD_BALANCER_ADDRESS]" ... />
于 2009-01-19T19:11:44.630 に答える
9

サーバーでSSLが有効になっていることを確認してください。

その証明書を持たないローカルボックスでHTTPS構成ファイルを使用しようとすると、このエラーが発生しました。バインディングの一部をHTTPSからHTTPに変換することにより、ローカルテストを実行しようとしていました。ローカルテスト用に自己署名証明書をインストールするよりも、これを行う方が簡単だと思いました。

実際に使用するつもりはなかったのに、ローカルIISでSSLを有効にしていないため、このエラーが発生していたことが判明しました。

HTTPSの構成に何かがありました。IIS7で自己署名証明書を作成すると、HTTPが機能するようになります:-)

于 2010-09-17T01:20:59.267 に答える
3

次の構成と同様の方法でサービスを構成しようとしていると思います。詳細については、Specify a Service with Two Endpoints Using Different Binding Values を参照してください。また、開発以外では、同じサービスに対して HTTP エンドポイントと HTTPS エンドポイントの両方を使用することはおそらくお勧めできません。HTTPS の目的を少し無効にします。お役に立てれば!

<service type="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
    <endpoint
        address="http://computer:8080/Hello"
        contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
        binding="basicHttpBinding"
        bindingConfiguration="shortTimeout"
    </endpoint>
    <endpoint
        address="http://computer:8080/Hello"
        contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
        binding="basicHttpBinding"
        bindingConfiguration="Secure"
     </endpoint>
</service>
<bindings>
    <basicHttpBinding 
        name="shortTimeout"
        timeout="00:00:00:01" 
     />
     <basicHttpBinding 
        name="Secure">
        <Security mode="Transport" />
     </basicHttpBinding>
</bindings>
于 2008-12-12T22:00:46.080 に答える
1

私の場合、バインディングで「Transport」ではなく「TransportCredentialOnly」にセキュリティモードを設定しています。それを変更すると問題が解決しました

<bindings>
  <webHttpBinding>
    <binding name="webHttpSecure">
      <security mode="Transport">
        <transport clientCredentialType="Windows" ></transport>
      </security>
      </binding>
  </webHttpBinding>
</bindings>
于 2012-04-05T07:49:21.937 に答える
0

ベース アドレスとエンドポイント アドレスを確認します (サンプル コードでは確認できません)。おそらく、列またはその他のタイプミスを見逃している可能性があります。たとえば、https:// ではなく https:// です。

于 2011-07-28T16:39:47.570 に答える
0

私は webHttpBinding を使用していましたが、エラーの原因となったバインディング構成で「トランスポート」のセキュリティモードを指定するのを忘れていました:

  <webHttpBinding>
    <binding name="MyWCFServiceEndpoint">
      <security mode="Transport" />
    </binding>
  </webHttpBinding>

これを構成に追加すると、問題が修正されました。

于 2012-02-01T20:37:50.600 に答える