2011-06-08 51 views
5

我的問題....WCF + Silverlight的+ HttpContext.Current.Session是空

我是tryingo從Silverlight和WCF basicHttpBinding的訪問會話...

我看到一些帖子,其中有可能( http://www.dotnetspider.com/Silverlight-Tutorial-317.aspx)

MYS cenario是:

Silvelright 4 FW 3.5

web.config中我有

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior name="ViewModelDemo.Web.Service1Behavior"> 
       <serviceMetadata httpGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="false" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="ViewModelDemo.Web.Service1Behavior" name="ViewModelDemo.Web.Service1"> 
      <endpoint address="" binding="basicHttpBinding" contract="ViewModelDemo.Web.Service1"> 
       <identity> 
        <dns value="localhost" /> 
       </identity> 
      </endpoint> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
</system.serviceModel> 

,我的服務:

[ServiceContract] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
public class Service1 
{ 
    [OperationContract] 
    publicvoid Test() 
    { 
     var session = System.Web.HttpContext.Current.Session; 
    } 
} 

而且它的調用

   var client = new Service1Client(); 
       client.GetUserMacroFunctionsCompleted += new System.EventHandler<GetUserMacroFunctionsCompletedEventArgs>(client_GetUserMacroFunctionsCompleted); 
       client.GetUserMacroFunctionsAsync(); 


void client_GetUserMacroFunctionsCompleted(object sender, GetUserMacroFunctionsCompletedEventArgs e) 
    { 
     var test = ((Collection<Function>)e.Result); 
    } 

HttpContext.Current總是空!

有什麼建議嗎?

回答

6

是HttpContext必須始終爲空,因爲您的服務配置不會設置ASP.NET兼容性,並且您的服務不需要ASP.NET兼容性。

添加到您的配置:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 

,並更改AspNetCompatibilityRequirements讓你的服務不能沒有前者的結構主辦:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
0

更新你的web.config文件,包括

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel> 

這應該工作,否則也改變了AspNe將Contract上的tCompatibilityRequirementsMode屬性設置爲Required。