2011-07-19 11 views
15

Jak uzyskać dostęp do HttpContext.Current.User.Username z aplikacji internetowej w usłudze WCF?Jak uzyskać dostęp do HttpContext.Current.User.Username w usłudze WCF

+1

You nie można - WCF ** nie ** koniecznie używa HTTP i nie może być hostowany w IIS, więc ... więc ** może nie być ** żadnym kontekstem HTTP w ogóle .... Co możesz zrobić jest użycie 'OperationContext' w twojej metodzie serwisowej WCF –

+0

Czy możesz mi powiedzieć, jak zaimplementować OperationContext w mojej metodzie usługi wcf, aby uzyskać tożsamość użytkowników. – user757207

Odpowiedz

29

Zwykle nie - HttpContext jest koncepcją ASP.NET i nie ma zastosowania do WCF, chyba że uruchomisz go z włączoną ASP.NET Compatibility.

Jeśli chcesz bieżącego użytkownika w WCF, użyj ServiceSecurityContext.Current.PrimaryIdentity lub uzyskaj kontekst zabezpieczeń poprzez OperationContext.

+1

+1 świetna odpowiedź - miejsce na ... –

+1

Wreszcie, ktoś na stercie, który nie tylko odpowiada na zadane pytanie, ale daje to, co chciał zapytać. – SteveCav

0

W rzeczywistości przy włączonym trybie zgodności z Asp.Net można uzyskać dostęp do HttpContext.Current.User z usługi WCF hostowanej na stronie. Zobacz witrynę firmy Microsoft w celu uzyskania szczegółów: https://msdn.microsoft.com/en-us/library/aa702682(v=vs.110).aspx

Jeśli usługa jest obsługiwana w witryny ASP.NET wystarczy zaktualizować web.config aby ustawić aspNetCompatibilityEnabled = „true” na elemencie serviceHostingEnvironment:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 
Powiązane problemy