2013-01-24 21 views
1

我在Windows Server 2008 R2上有一個WCF。我有一個SSL證書。.net WCF GET HTTPS 400錯誤的請求,但與Http好的處理器

與IE瀏覽器,在HTTP URL工作正常(我得到我的數據),但以https我有一個400錯誤的請求。

請問您能幫我嗎?

web.config中的我的WCF如下:

<?xml version="1.0" encoding="utf-8"?> 

<bindings> 
    <basicHttpBinding> 
    <binding name="TransportSecurity"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None" /> 
     </security> 
    </binding>  
    </basicHttpBinding>  
</bindings> 

<behaviors> 
    <endpointBehaviors> 

    <behavior name="ServiceRequestResourcesAspNetAjaxBehavior"> 
     <webHttp defaultOutgoingResponseFormat="Json" />  
    </behavior> 

    <behavior name="ServiceRequestResourcesAspNetAjaxBehaviorHttps">   
    </behavior> 

    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceRequestResourcesBehaviors"> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true" />   
    </behavior>   
    </serviceBehaviors> 
</behaviors> 

<services> 
    <service behaviorConfiguration="ServiceRequestResourcesBehaviors" 
      name="BaseSite.ServiceRequestResources"> 

    <endpoint address="" 
      behaviorConfiguration="ServiceRequestResourcesAspNetAjaxBehaviorHttps" 
      binding="basicHttpBinding" 
      bindingConfiguration="TransportSecurity" 
      contract="BaseSite.ServiceRequestResources" /> 

    <endpoint address="" 
       behaviorConfiguration="ServiceRequestResourcesAspNetAjaxBehavior" 
       binding="webHttpBinding" contract="BaseSite.ServiceRequestResources" /> 

    </service>  
</services> 

+0

試圖加入SvcTraceViewer記錄到你的配置,以獲取有關錯誤的詳細信息。 – datadamnation

+0

使用WCF時,任何種類的證書警告都會導致錯誤400。當您直接訪問網址時,您是否收到任何警告? – tgolisch

+0

與SvcTraceViewer我趕上了錯誤:「System.Xml.XmlException:消息的身體無法閱讀,因爲它是空的」 – Dave

回答

0

爲了您的部分,你嘗試添加端點HTTPS,像這個:

<services> 
    <service behaviorConfiguration="ServiceRequestResourcesBehaviors" 
     name="BaseSite.ServiceRequestResources"> 

     <endpoint address="" 
      behaviorConfiguration="ServiceRequestResourcesAspNetAjaxBehaviorHttps" 
      binding="basicHttpBinding" 
      bindingConfiguration="TransportSecurity" 
      contract="BaseSite.ServiceRequestResources" /> 

     <endpoint address="" 
      behaviorConfiguration="ServiceRequestResourcesAspNetAjaxBehavior" 
      binding="webHttpBinding" contract="BaseSite.ServiceRequestResources" /> 

     <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
    </service>  
</services> 
2

大量測試後,它的工作。我需要在webHttpBinding而不是basicHttpBinding中配置綁定部分,但我不知道爲什麼。

下面我綁定部分:

<bindings> 
    <webHttpBinding> 
     <binding name="TransportSecurity"> 
      <security mode="Transport"> 
       <transport clientCredentialType="None" /> 
      </security> 
     </binding> 
    </webHttpBinding> 
</bindings> 
+0

這個固定我的問題。謝謝 –

相關問題