https://mywebsite/MyApp/Myservice.svc にアクセスすると、次のエラーが表示されます。
(http://を使用するとリンクが機能します)
"コンパイル中の例外のため、サービス '/MyApp/MyService.svc'をアクティブにできません。例外メッセージ:バインドBasicHttpBindingを持つエンドポイントのスキームhttpsに一致するベースアドレスが見つかりませんでした。スキームは[http] .. "
EDIT:したがって、address=""
からaddress="https:// ..."
その後、代わりにこのエラーが表示されます。
"エラー:プロトコル 'https'はサポートされていません..... ' https://.../Annotation.svc 'のChannelDispatcher (s) '"注釈"'は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>
私の問題は、ロードバランサーを使用してSSLを処理し、それがhttpを介して実際のサーバーに送信し、その後文句を言うことであることが判明しました。
編集:マイクロソフトのサポートに相談した後、わずかに異なる問題を修正しました。
私のsilverlightアプリは、ロードバランサーへのhttps経由のコードにエンドポイントアドレスがありました。次に、ロードバランサーはエンドポイントアドレスをhttpに変更し、目的の実際のサーバーを指すようにしました。したがって、各サーバーのWeb構成で、httpsではなくhttpであるエンドポイントのlistenUriを追加しました
<endpoint address="" listenUri="http://[LOAD_BALANCER_ADDRESS]" ... />
これとまったく同じ問題がありました。私の解決策を除いて、バインディング値に「s」を追加することでした。
Old: binding = "mexHttpBinding"
新規: binding = "mexHttpsBinding"
web.config snippet:
<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>
サーバーでSSLが有効になっていることを確認してください!
その証明書がないローカルボックスでHTTPS構成ファイルを使用しようとすると、このエラーが発生しました。いくつかのバインディングをHTTPSからHTTPに変換して、ローカルテストを実行しようとしていました。ローカルテスト用に自己署名証明書をインストールするよりも、これを行う方が簡単だと思いました。
SSLが有効になっていないローカルでIIS実際に使用するつもりはなかったにもかかわらず).
HTTPSの構成に何かがありました。 IIS7で自己署名証明書を作成すると、HTTPが機能するようになりました:-)
次の設定と同様の方法でサービスを設定しようとしていると思います。ここに詳細があります: 異なるバインディング値を使用して2つのエンドポイントを持つサービスを指定 。また、開発以外では、同じサービスに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>
私の場合、バインディングで「Transport」ではなく「TransportCredentialOnly」にセキュリティモードを設定しています。変更して問題を解決しました
<bindings>
<webHttpBinding>
<binding name="webHttpSecure">
<security mode="Transport">
<transport clientCredentialType="Windows" ></transport>
</security>
</binding>
</webHttpBinding>
</bindings>
私はwebHttpBindingを使用しており、エラーの原因となったバインディング構成で「トランスポート」のセキュリティモードを指示するのを忘れていました。
<webHttpBinding>
<binding name="MyWCFServiceEndpoint">
<security mode="Transport" />
</binding>
</webHttpBinding>
これを構成に追加すると、問題が修正されました。
ベースアドレスとエンドポイントアドレスを確認します(サンプルコードでは確認できません)。列または他のタイプミスを逃した可能性が高いです。 https://ではなくhttps //