Můžete použít statické metody v WCF, která přistupuje HttpContext.Current.Items?

hlasů
1

Mám interceptor, že zvedne data z hlavičky zprávy o požadavku WCF. Viz. níže:

public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
    _CurrentRequest = request;
    SetupSecurityPrincipal();
    ThreadExtension.PersonID = GetIntHeader(HeaderKeys.PersonID);
    return null;
}

ThreadExtension(ignorovat jméno nic neznamená) je třída se statickými vlastnostmi, které poskytují get / set se HttpContext.Current. Viz. níže:

public class ThreadExtension
{
    public static int? PersonID
    {
        get { return (int?)HttpContext.Current.Items[PersonID]; }
        set { HttpContext.Current.Items[PersonID] = value; }
    }
}

Problém je tedy na základě žádostí našich webových konce našich WCF webové služby, někdy informace na ThreadContextzměny, pokud máme 2 požadavky, které se dějí dost blízko sebe, což má za následek údajů jedné osoby v relaci jiného člověka.

Takže moje otázka je, co děláme špatně? Je použití statické vlastnosti zde není správný přístup? V ideálním případě, jen potřebujeme něco, co je vázána na požadavek WCF, takže se můžeme dostat k ní, aniž by procházely data kolem celou dobu, na několika místech.

Jakákoli pomoc či radu můžete poskytnout bude velmi ocenil.

Položena 17/08/2011 v 05:46
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Podezřelý linka je:

_CurrentRequest = request;

Inspektoři zprávy WCF jsou obvykle jedináčci takže instance proměnné jsou v podstatě statické. Toto nastavení a pak čtení hlavičky z něj jinde ve třídě povede k zákazu deterministické chování jste svědky.

Odpovězeno 17/08/2011 v 10:52
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more