Случайные двойные веб-запросы C # IIS7 PollLockedSessionCallback - PullRequest
4 голосов
/ 02 марта 2012

У меня иногда бывают двойные веб-запросы (без двойных кликов).Может кто-нибудь сказать мне, что вызывает их, чтобы я мог предотвратить их?

исходная ситуация:

Это приложение .Net 3.5 C #, работающее в IIS7.Нет Asp.Net с ViewState.Просто PageHandlers с преобразованиями Xml / Xslt.Код очень старый.Эта проблема только появилась неожиданно некоторое время назад.Мы отправляем туда электронные письма, и вот как это появилось.Иногда мы внезапно получали две почты вместо одной.

Мои наблюдения пока:

Это случается редко, но тем не менее иногда.Видимо случайный.Отправленные байты в первом запросе равны 0, но они не являются двойными кликерами.HttpContext.Current.Response.IsClientConnected верен.

Мои предположения пока:

Кажется, что-то идет не так в SessionHandling (через Sql-Server), и этоповторно открывает запрос?

Журнал IIS:

2012-03-02 08:16:43 W3SVC9026 [Сервер] [IP-адрес сервера] POST [Внутренний URL-адрес] - 80 - [IP-адрес клиента] HTTP/1.1 Mozilla / 4.0 + (совместимо; + MSIE + 8.0; + Windows + NT + 5.1; + Trident / 4.0; + AskTbORJ / 5.14.1.20007) ASP.NET_SessionId = [Идентификатор сеанса] [Абсолютный URL] [Имя хоста] 2000 64 0 899 937

2012-03-02 08:16:43 W3SVC9026 [Сервер] [IP-адрес сервера] POST [внутренний URL-адрес] - 80 - [IP-адрес клиента] HTTP / 1.1 Mozilla / 4.0 + (совместимо; + MSIE + 8,0; + Windows + NT + 5.1; + Trident / 4.0; + AskTbORJ / 5.14.1.20007) ASP.NET_SessionId = [Идентификатор сеанса] [Абсолютный URL] [Имя хоста] 200 0 0 45888 923 1343

StackTrace:

08: 16: 43 Обычный запрос (все обычные запросы, которые выполняются только один раз, тоже выглядят так)

в System.Environment.get_StackTrace ()в [MyPageHandler.ProcessRequest (HttpContext httpContext) и т. д.]в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()в System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершен синхронно)в System.Web.HttpApplication.ApplicationStepManager.ResumeSteps (ошибка исключения)в System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest (контекст HttpContext, AsyncCallback cb, Object extraData)в System.Web.HttpRuntime.ProcessRequestInternal (HttpWorkerRequest wr)в System.Web.HttpRuntime.ProcessRequestNoDemand (HttpWorkerRequest wr)в System.Web.Hosting.ISAPIRuntime.ProcessRequest (EcP IntPtr, iWRType Int32)

08: 16: 44 Дополнительный запрос

в System.Environment.get_StackTrace ()в [MyPageHandler.ProcessRequest (HttpContext httpContext) и т. д.]в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()в System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершен синхронно)в System.Web.HttpApplication.ApplicationStepManager.ResumeSteps (ошибка исключения)в System.Web.HttpApplication.ResumeStepsFromThreadPoolThread (ошибка исключения)в System.Web.HttpApplication.AsyncEventExecutionStep.ResumeStepsWithAssert (ошибка исключения)в System.Web.HttpApplication.AsyncEventExecutionStep.OnAsyncEventCompletion (IAsyncResult ar)в System.Web.HttpAsyncResult.Complete (логическое синхронное, результат объекта, ошибка исключения, статус RequestNotificationStatus)в System.Web.SessionState.SessionStateModule.PollLockedSessionCallback (состояние объекта)в System.Threading.ExecutionContext.runTryCode (объект userData)в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (код TryCode, код возврата CleanupCode, объект userData объекта)в System.Threading.ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта)в System.Threading._TimerCallback.PerformTimerCallback (состояние объекта)

...