WCF + Silverlight + HttpContext.Current.Session является нулевым - PullRequest
5 голосов
/ 08 июня 2011

моя проблема ....

я пытаюсь получить доступ к сеансу из Silverlight и WCF basicHttpBinding ...

я видел несколько сообщений, где это возможно (http://www.dotnetspider.com/Silverlight-Tutorial-317.aspx)

MysCenario:

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 всегда нулевой!

Есть предложения?

Ответы [ 3 ]

6 голосов
/ 08 июня 2011

Да HttpContext всегда должен быть нулевым, поскольку в конфигурации вашего сервиса не настроена совместимость с ASP.NET, а вашему сервису не требуется совместимость с ASP.NET.

Добавьте это к вашей конфигурации:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

И измените AspNetCompatibilityRequirements, чтобы ваша служба не могла быть размещена без прежней конфигурации:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
1 голос
/ 15 ноября 2011

Эта ссылка, вероятно, поможет вам.

http://blogs.msdn.com/b/sajay/archive/2006/08/03/687361.aspx

aspNetCompatibilityEnabled="true" не поможет мне, пока я не установлю allowCookies="true" в конфигурации привязки клиента.

0 голосов
/ 08 июня 2011

Обновите файл web.config, включив в него

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

Это должно сработать, или же измените атрибут AspNetCompatibilityRequirementsMode в контракте на Обязательный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...