2011-12-22 14 views
-1

私の問題の解決策が見つかりません。私はwcfを作成し、私はasp.netページのjqueryから消費しています。私はhttp://を使って展開しましたが、https://を使用してセキュリティモードをトランスポートに変更するとエラーが発生します。しかし、セキュリティモードをnoneに設定するだけで、ブラウザからアクセスできます。あなたはそれを把握するために導くことができますか?私はそれをWindows Server 2003に導入しています。ありがとう!WCF HTTPSはブラウザ経由でアクセスしてもコードビハインドではないときに動作します。 asp.net jquery

1.Open IIS:以下ないWindows 7マシン上のHTTPSのためのあなたのサービスを設定するために

<system.serviceModel>  
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     multipleSiteBindingsEnabled="true" /> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="QPServiceAspNetAjaxBehavior"> 
      <enableWebScript />   
     </behavior>  
     </endpointBehaviors>  
    </behaviors> 
    <services>  
     <service name="tService"> 
     <endpoint address="" behaviorConfiguration="tServiceAspNetAjaxBehavior" 
      binding="webHttpBinding" bindingConfiguration="webBinding" contract="tService" /> 
     </service> 
    </services> 
    <bindings> 
     <webHttpBinding> 
     <binding name="webBinding"> 
      <security mode="None"> 
      </security> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    </system.serviceModel> 
+0

あなたはどのようなエラーが発生していますか? –

+0

セキュリティモード= "Transport"を設定すると、バインディングWebHttpBindingを持つエンドポイントのスキームhttpsに一致するベースアドレスを見つけることができませんでした。登録ベースアドレススキームは[http]です。 –

+0

また、Windowsの資格情報を入力するように依頼しています。 –

答えて

0

いくつかの試行錯誤の後に。私はHTTPとHTTPS両方のwcf設定を可能にする解決策を見つけたので、以下の設定は私の問題の解決策です。私の質問に答えてくれてありがとう。

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
          multipleSiteBindingsEnabled="true" /> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="QPServiceAspNetAjaxBehavior"> 
     <enableWebScript /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<services> 
    <service name="QPService">   
    <!-- http and https  --> 
    <endpoint address="" 
       behaviorConfiguration="QPServiceAspNetAjaxBehavior" 
       binding="webHttpBinding" 
       bindingConfiguration="webBindingSecure" 
       contract="QPService"/>   
    <endpoint address="" 
       behaviorConfiguration="QPServiceAspNetAjaxBehavior" 
       binding="webHttpBinding" 
       bindingConfiguration="webBinding" 
       contract="QPService" /> 

    <!--http 
    <endpoint address="" behaviorConfiguration="QPServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="QPService" /> 
    -->   
    <!--https  --> 
    <endpoint address="" 
       behaviorConfiguration="QPServiceAspNetAjaxBehavior" 
       binding="webHttpBinding" 
       bindingConfiguration="webBindingSecure" 
       contract="QPService"/> 
    </service> 
</services> 
<bindings> 
    <webHttpBinding> 
    <binding name="webBinding"> 
     <security mode="None"> 
     </security> 
    </binding> 
    <binding name="webBindingSecure"> 
     <security mode="Transport"> 
     </security> 
    </binding> 
    </webHttpBinding> 
</bindings> 

+0

あなたの例でHTTPSが複製される理由はありますか? 2番目のHTTPSをコメントアウトするか削除する必要がありますか? – OmegaMan

0

。サイトフォルダを右クリックし、[新しいWebサイトを追加]を選択して新しいWebサイトを作成します。

2.新しいウェブサイトの追加ポップアップが表示されます。詳細を入力し、[バインディング]セクションで[タイプ]を[https]に設定すると、ポートが443に変更され、SSL証明書のドロップダウンが表示されます。

3.このウェブサイトまたはこのウェブサイトのアプリケーションの通信チャネルを保護するために使用されるドロップダウンから証明書を選択します。

上記の手順を実行すると、httpsをリッスンするWebサイトが作成されます。今すぐこのWebサイトの下にアプリケーションをホストし、IEでサービスを参照しようとすると、そのWebサイトを表示してアクセスできるはずです。

注:ご使用の構成では、サービスの名前空間が指定されていません。あなたはあなたのサービスとサービス契約の完全修飾名を持っている必要があります。

私は、上記の設定を持っているし、今私は、HTTPS上で、私のWCFサービスを閲覧することができたスルー、以下の構成があります。

<service name="Sample.SampleService" behaviorConfiguration="TransportSecurity"> 
     <endpoint address="" binding="webHttpBinding" bindingConfiguration="test" contract="Sample.ISampleService">   
     </endpoint> 
     </service> 

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

<behavior name="TransportSecurity"> 
      <serviceCredentials> 
      <serviceCertificate findValue="localhost" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" /> 
      </serviceCredentials> 
      <serviceMetadata httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
+0

私はこれを試みます。ありがとう! –

関連する問題