Pergunta

Eu apenas escrevi o meu primeiro serviço web, então vamos fazer a suposição de que a minha knowlege serviço web não existant. Eu quero tentar chamar uma função DBClass do serviço web. No entanto, eu preciso de alguns parâmetros que estão na sessão. Existe alguma maneira eu posso obter estas chamadas essas variáveis ??de sessão do webservice ??

Foi útil?

Solução

Se você estiver usando serviços web ASP.NET e você quer ter um ambiente de sessão mantida para você, que você precisa para embelezar o seu método de serviço web com um atributo que indica que requerem uma sessão.

[WebMethod(EnableSession = true)]
public void MyWebService()
{
    Foo foo;
    Session["MyObjectName"] = new Foo();
    foo = Session["MyObjectName"] as Foo;
}

Depois de ter feito isso, você pode acessar sessão de objetos semelhantes aos aspx.

Metro.

Outras dicas

Você deve evitar o aumento da complexidade da camada de serviço adição de variáveis ??de sessão. Como alguém anteriormente apontado, pense nos serviços web como métodos isoladas que levam tudo o que é necessário para executar a tarefa de sua lista de argumentos.

Nos serviços web em geral não deve confiar em dados da sessão. Pense neles como métodos comuns:. Parâmetros entrar e uma resposta sai

Se você tem que querer Session [ "username"]. ToString (); como nas outras páginas C # por trás aspx então você deve simplesmente substituir [WebMethod] acima do método WebService com [WebMethod (EnableSession = true)]

graças a :) Metro

Talvez isso vai funcionar HttpContext.Current.Session [ "Name] Ou então você pode ter que tomar em alguns parâmetros ou armazená-los em um banco de dados

A sua pergunta é um pouco vaga, mas eu vou tentar o meu melhor para responder.

Estou assumindo que existem suas variáveis ??de sessão no servidor que está fazendo a chamada webservice, e não no servidor que hospeda o webservice. Nesse caso, você precisará passar os valores necessários como parâmetros de seus métodos de serviço da Web.

Para usar sessão no webservice temos de seguir 2 passos -

  1. Use [WebMethod (EnableSession = true)] atributo no método.
  2. Session [ "Nome"] = 50 (o que nunca você deseja salvar) Por favor verifique o seguinte exemplo.
[WebMethod(EnableSession = true)]  
public void saveName(string pname)  
{  
   Session["Name"] = pname;  

 }  

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top