5

私の問題....

Silverlight と WCF の basicHttpBinding からセッションにアクセスしようとしています...

可能な投稿をいくつか見ました (http://www.dotnetspider.com/Silverlight-Tutorial-317.aspx)

私のシナリオは次のとおりです。

シルベルライト 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 は常に null です。

助言がありますか?

4

3 に答える 3

6

はい、HttpContext は常に null である必要があります。これは、サービス構成で ASP.NET 互換性が設定されておらず、サービスが ASP.NET 互換性を必要としないためです。

これを構成に追加します。

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

そしてAspNetCompatibilityRequirements、以前の構成なしではサービスをホストできないように変更します。

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
于 2011-06-08T13:59:34.007 に答える
0

含めるように web.config ファイルを更新します。

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

これは機能するはずです。または、コントラクトの AspNetCompatibilityRequirementsMode 属性を Required に変更することもできます。

于 2011-06-08T14:04:13.213 に答える