2011-07-09 112 views
0

來自我的silverlight 4.0應用程序。我可以輕鬆地訪問WCF文件,但是當移動到https時,我無法訪問WCF服務。錯誤細節如下:Silverlight WCF通過https訪問的錯誤

An unknown error occurred. Please contact your system Administrator for more information. 

An exception occurred during the operation, making the result invalid. Check InnerException for exception details. 

    at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() 
    at FileSearch.SearchServices.GetTypeofFileDetailedCompletedEventArgs.get_Result() 
    at FileSearch.Home.<SearchButton_Click>b__0(Object s, GetTypeofFileDetailedCompletedEventArgs ea) 
    at FileSearch.SearchServices.SearchServiceClient.OnGetTypeofFileDetailedCompleted(Object state) 

我已經看到了關於這個問題不同的崗位,但沒有指向我在一個正確的方向。

下面是關於承載Silverlight應用程序以及WCF服務的Web應用程序的web.config文件的詳細信息。

<services> 
    <service name="FileSearch.Web.Services.SearchService"> 
    <endpoint address="" binding="customBinding" bindingConfiguration="FileSearch.Web.Services.SearchService.customBinding0" contract="FileSearch.Web.Services.SearchService" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

這裏是servicerefernce.clientconfig文件:

<configuration> 
    <system.serviceModel> 
     <bindings> 
      <customBinding> 
       <binding name="CustomBinding_SearchService"> 
        <binaryMessageEncoding /> 
        <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" /> 
       </binding> 
      </customBinding> 
     </bindings> 
     <client> 
      <endpoint address="../Services/SearchService.svc" 
       binding="customBinding" bindingConfiguration="CustomBinding_SearchService" 
       contract="SearchServices.SearchService" name="CustomBinding_SearchService" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

UPDATE:

我收到的答案運行僅在HTTPS模式的業務。我想在http和https模式下運行該服務。

有關於此的任何想法?

+0

您可以發佈您嘗試在服務中調用的操作的代碼嗎?這聽起來像是該操作中有一個例外。 – Tim

+0

但它在'http'上正常工作。問題出在'https' –

+0

你的配置文件中沒有任何安全設置 - 這可能是問題的一部分? – Tim

回答

2

指定的兩個端點一個有安全運輸和一個沒有它。

+0

這是正確的。有效。此外,我不得不更新服務引用,導致clientconfig文件中有兩個端點和兩個綁定,然後根據'System.Windows.Browser.HtmlPage.Document.DocumentUri.Scheme.SttmlWith的名稱動態訪問綁定。 (「https」)'做了這一切......(對於任何後來查看此內容的人) –

1

嘗試添加

<security mode="Transport" /> 

在您的服務配置文件。這應該嵌套在綁定節點中。

查看this文章中的安全模式配置部分。

+0

你的意思是爲此添加''?因爲在安全性方面沒有簡單的'mode'屬性... –

0

爲了支持https配置,你需要改變運輸<httpsTransport>.我看你使用<httpTransport>.

+0

我試過了,但沒有奏效。我嘗試了'bind = wsHttpBinding'的Vinay方法,它工作正常,但它只適用於https模式。我希望它運行http和https模式... –