2016-02-09 16 views
7

Mam witrynę ASP.NET MVC. Gdy wystąpią błędy w witrynie, chciałbym zarejestrować wyjątek wraz z wartością Request.AnonymousID, aby móc wykryć, czy jeden użytkownik ma 20 błędów, lub 20 użytkowników doświadcza tego samego błędu. Poniższa został dodany do pliku web.config:AnonymousId ma zawsze wartość null

<system.web> 
    <anonymousIdentification enabled="true" /> 
    ... 
</system.web> 

Rozwijając w Visual Studio i korzystania z usług IIS Express, to działa zgodnie z przeznaczeniem. Jednak po przeniesieniu witryny do środowiska testowego (które uruchamia usługi IIS 8.5 w systemie Windows Server 2012 R2) wartość Request.AnonymousID jest zawsze pusta.

Uwierzytelnianie anonimowe zostało również skonfigurowane dla witryny w IIS. Po każdej zmianie konfiguracji próbuję zrestartować witrynę, zresetować pulę aplikacji i wyczyścić pliki cookie w przeglądarce - nic nie działa. Plik cookie .ASPXANONYMOUS zostaje wygenerowany, ale identyfikator jest zawsze pusty, gdy próbuję go użyć w kodzie.

Próbowałem nawet stworzyć szybką stronę-dummy, która pokazuje tylko AnonymousId na stronie i działa w środowisku testowym, więc nie mogę wymyślić, co robię źle w aktualnej witrynie.

Każda pomoc zostanie bardzo doceniona.


Edit 1: Dodałem następujące do Global.asax, w celu wygenerowania niestandardowej AnonymousId:

protected void AnonymousIdentification_Creating(object sender, AnonymousIdentificationEventArgs args) 
{ 
    string id = string.Format("Test-{0}", Guid.NewGuid()); 
    args.AnonymousID = id; 
} 

Ponownie, to działa na moim komputerze i na moim miejscu manekina na test- serwer, ale nie w rzeczywistej witrynie.

Witryna jest podstroną (np. mysite .domena.com), jeśli ma to jakiekolwiek znaczenie. Fikcyjna witryna jest także podstroną, ale tutaj anonimowe uwierzytelnianie działało "po wyjęciu z pudełka".


Edit 2: Wydaje się, że nie jest już AnonymousId zerowy na miejscu w teście-środowiskowych. Został teraz wypełniony formatem dostarczonym w module obsługi zdarzenia dodanym do Global.asax. Tak więc, chociaż wygląda na to, że wszystko ustawiłem poprawnie, nadal chciałbym wiedzieć, co mogło zapobiec wygenerowaniu identyfikatora. Czy to był problem z konfiguracją? Czy nie zrobiłem rzeczy we właściwej kolejności (zrestartuj pulę aplikacji serwera/recyklingu, wyczyść pliki cookie itp.)?

+0

Czy oba środowiska (programista i test) korzystają z tej samej nazwy hosta? – haim770

+0

@ haim770 Witryna dev dostępna jest przez _localhost: 61615_ na moim komputerze, podczas gdy strona testowa ma aktualną nazwę hosta. Witryna jest podstroną (np. ** mysite **. Domain.com), jeśli to robi jakąkolwiek różnicę. –

Odpowiedz

1

To powinno zadziałać. Nie istnieje żadna korelacja między nazwą hosta a plikiem cookie ASPXANONYMOUS. Sprawdź, czy moduł anonimowego uwierzytelniania jest zainstalowany w usługach IIS i do czego jest ustawiony. Widziałem przypadki, w których ten moduł nie jest zainstalowany.

+0

Moduł anonimowego uwierzytelniania jest obecny w Menedżerze usług IIS w części "Moduły" witryny. Czy może to być problem z konfiguracją w innych usługach IIS? –

+0

Tak. Konfiguracja IIS może być nadpisana na kilku poziomach. Będziesz musiał sprawdzić, czy konfiguracja została zmieniona w dowolnym miejscu –

Powiązane problemy