Używam WCF REST stater kit do budowy zwykłego xml przez usługę HTTP. W ramach tego Im przy użyciu RequestInterceptor do uwierzytelniania. Wewnątrz obiektu RequestInterceptor mam dostęp do obiektu System.ServiceModel.Channels.RequestContext, z którego mogę uzyskać adres URL żądania, querystring params i inne przydatne rzeczy. Nie mogę się dowiedzieć, jak uzyskać dostęp do HttpContext żądania. Mam kilka rzeczy przechowywanych w HttpContext, które chcę uzyskać dostęp wewnątrz requestInterceptor, ale Im stara się dostać do nich. Kiedy używam szybkiego podglądu wewnątrz Visual Studio, widzę, że jest on pochowany w prywatnych elementach requestContext. Czy ktoś może mi pokazać, jak uzyskać dostęp do HttpContext, być może za pomocą refleksji na obiekcie RequestContext?Dostęp do HttpContext w WCF RequestInterceptor
Odpowiedz
Możesz uzyskać dostęp do HttpContext środowiska ASP.NET wewnątrz dowolnej usługi WCF hostowanej w środowisku ASP.NET, jeśli tylko włączasz kompatybilność. Odbywa się to w dwóch etapach:
- Zastosuj AspNetCompatibilityRequirementsAttribute do klasy usług i ustawić właściwość RequirementsMode z wymaganymi
Upewnij włączyć kompatybilność konfigurując następujące:
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled=”true” /> </system.serviceModel>
Po wykonaniu tej czynności można w dowolnym momencie uzyskać dostęp do bieżącej instancji HttpContext, używając the static Current property. Na przykład:
foreach(HttpCookie cookie in HttpContext.Current.Request.Cookies)
{
/* ... */
}
Zauważ, że umożliwiając integrację ze środowiskiem wykonawczym ASP.NET ma ponieść jakieś dodatkowe obciążenie dla każdego żądania, jeśli więc nie trzeba go można zaoszczędzić trochę wydajność, nie pozwalając go i tylko przy użyciu Zamiast tego uruchomiono środowisko wykonawcze System.ServiceModel.Web. Masz dostęp do prawie wszystkich informacji, których potrzebujesz, używając klas HttpRequestResponseMessageProperty i HttpResponseMessageProperty.
Aby uzyskać więcej informacji na ten temat, zobacz this section of MSDN titled WCF and ASP.NET.
- 1. Jak uzyskać dostęp do HttpContext poza kontrolerami w ASP.NET MVC?
- 2. Dostęp do bieżącego HttpContext w środowisku ASP.NET Core
- 3. Jak uzyskać dostęp do HttpContext w teście jednostki w ASP.NET 5/MVC 6
- 4. Jak uzyskać dostęp do HttpContext.Current.User.Username w usłudze WCF
- 5. Jak uzyskać dostęp do usługi WCF w aplikacji ASP.Net MVC?
- 6. mvc utworzyć mój własny helper HTML, w jaki sposób mogę uzyskać dostęp do httpcontext?
- 7. HttpContext null w pliku Hub Signalr
- 8. Forward nagłówek żądania z klientem RequestInterceptor udawać
- 9. Dodaj niestandardową klasę HttpContext
- 10. Kpiny HttpContext nie działa
- 11. Nieosiągalny kontekst zabezpieczeń za pomocą Feign RequestInterceptor
- 12. Jak ograniczyć dostęp do usługi WCF za pomocą klucza wspólnego
- 13. WCF, Dostęp do systemu Windows tworzy formanty z usługi
- 14. Co jest potrzebne w HttpContext, aby umożliwić FormsAuthentication.SignOut() do wykonania?
- 15. Jak uzyskać nagłówek "Host:" z HttpContext (asp.net)
- 16. HttpContext kontra OperationContext w DataService z nagłówkami HTTP
- 17. StructureMap rzuca ArgumentNullException na HttpContext
- 18. Uzyskaj zarejestrowane HttpHandlers w Web.Config z HttpContext
- 19. Wykrywanie https z HttpContext w .net?
- 20. HttpContext nie jest dostępny w Bibliotece klas
- 21. Budując HttpContext do testowania, jak mogę określić HttpRequest jest POST?
- 22. WebAPI OData 5.0 Beta - dostęp do GlobalConfiguration rzuca błąd bezpieczeństwa
- 23. MVC 4 Makiety HttpContext - jak kpić DisplayModeProvider
- 24. Kpiny z HttpContext Response.Output z Moq
- 25. Pobierz bieżącą stronę System.Web.UI.Page z HttpContext?
- 26. Jak uzyskać dostęp do właściwości utworzonej w pliku global.asax.cs?
- 27. Dlaczego makiety HttpContext, jeśli można go zbudować?
- 28. Dlaczego HttpContext nie zawiera nagłówka "Host"?
- 29. Moq: jednostka testowania metody polegając na HttpContext
- 30. HttpContext ma wartość null dla kontrolera MVC
Mam już na miejscu wszystko, o czym wspomniałeś powyżej. Mam dostęp do HttpContext wewnątrz normalnej metody OperationContract, ale wewnątrz requestInterceptor (http://weblogs.asp.net/gsusx/archive/2008/11/26/extending-restful-services-with-a-ustom-request -interceptor.aspx? CommentPosted = true # commentmessage) –