2008-11-25 5 views
8

Я только что запустил свой tiny webapp на моем скромном выделенном сервере (Win2003) ... запуске ASP.NET MVC, LINQ2SQL, SQL Express 2005 и IIS6 (настройка с wildcard mapping)Ошибка ASP.NET MVC (IIS6) при высоком трафике: Указанный приказ недействителен

Веб-сайт работает гладко в 90% случаев. Однако, на сравнительно высокого трафика, Linq2SQL бросает ошибку: указано литое не действует

Этой ошибка только брошена высокой проходимости. У меня есть NO IDEA как и почему именно так происходит. Кэширование не полностью устранило эту проблему.

Кто-нибудь видел эту проблему раньше? есть ли секретная настройка SQL Server, которую я должен был сделать? Или, по крайней мере, любые идеи о том, как диагностировать эту проблему? потому что я ушел!

Нэйми

StackTrace (из журнала событий):

 
at System.Data.SqlClient.SqlBuffer.get_SqlGuid() 
    at System.Data.SqlClient.SqlDataReader.GetGuid(Int32 i) 
    at Read_Friend(ObjectMaterializer`1) 
    at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() 
    at Dudlers.Web.Models.DudlersDataContext.GetFriendRequests(Guid userId) in C:\Web\Models\DudlersDataContext.cs:line 562 
    at Dudlers.Web.Controllers.BaseController.View(String viewName, String masterName, Object viewData) in C:\Web\Controllers\BaseController.cs:line 39 
    at System.Web.Mvc.Controller.View(String viewName) 
    at Dudlers.Web.Controllers.CatController.Index() in C:\Web\Controllers\CatController.cs:line 25 
    at lambda_method(ExecutionScope , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(MethodInfo methodInfo, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.c__DisplayClassb.b__8() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
    at System.Web.Mvc.ControllerActionInvoker.c__DisplayClassb.c__DisplayClassd.b__a() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(MethodInfo methodInfo, IDictionary`2 parameters, IList`1 filters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 
    at System.Web.Mvc.Controller.ExecuteCore() 
    at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) 
    at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) 
    at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) 
    at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) 
    at System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
+1

Какой высокий трафик? – Blankman 2008-11-25 20:30:53

+0

Бланкман: ​​относительно высокий ... не очень высокий ... общее количество уникальных посетителей в день составляет около 1,5 тыс. ... и большая часть активности (время заглядывания) составляет около 9:00 вечера по Гринвичу ... что обычно бывает когда пользователи начните получать ошибки. – ANaimi 2008-11-25 20:35:45

ответ

6

У нас была аналогичная проблема с LINQ, что мы получаем «Невозможно использовать объект типа« System.Int32 »для ввода« System.String »и« Указанный приведение недействителен ».

Примеры stacktraces

System.InvalidCastException: Unable to cast object of type 'System.Int32' to type 'System.String'. 
    at System.Data.SqlClient.SqlBuffer.get_String() 
    at System.Data.SqlClient.SqlDataReader.GetString(Int32 i) 
    at Read_Person(ObjectMaterializer`1) 
    at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() 
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
    at RF.Ias.Services.Person.BusinessLogic.PersonTransactionScripts.GetPersons(IEnumerable`1 personIds, Boolean includeAddress, Boolean includeContact) 
    at CompositionAopProxy_5b0727341ad64f29b816c1b73d11dd44.GetPersons(IEnumerable`1 personIds, Boolean includeAddress, Boolean includeContact) 
    at RF.Ias.Services.Person.ServiceImplementation.PersonService.GetPersons(GetPersonRequest request) 


System.InvalidCastException: Specified cast is not valid. 
    at System.Data.SqlClient.SqlBuffer.get_Int32() 
    at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i) 
    at Read_GetRolesForOrganisationResult(ObjectMaterializer`1) 
    at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() 
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
    at RF.Ias.Services.Role.DataAccess.RoleDataAccess.GetRolesForOrganisation(GetRolesForOrganisationCriteria criteria, Int32 pageIndex, Int32 pageSize, Int32& recordCount) 
    at RF.Ias.Services.Role.BusinessLogic.RoleTransactionScripts.GetRolesForOrganisation(GetRolesForOrganisationCriteria criteria, Int32 pageIndex, Int32 pageSize, Int32& recordCount) 
    at CompositionAopProxy_4bd29c6074f54d10a2c09bd4ab27ca66.GetRolesForOrganisation(GetRolesForOrganisationCriteria criteria, Int32 pageIndex, Int32 pageSize, Int32& recordCount) 
    at RF.Ias.Services.Role.ServiceImplementation.RoleService.GetRolesForOrganisation(GetRolesForOrganisationRequest request) 

Мы использовали, чтобы получить эти исключения, если мы сначала получили исключение, как этот «System.InvalidOperationException: Там есть уже открытое DataReader, связанное с этой командой, которая должна быть закрыта первой.» или «При получении результатов с сервера произошла ошибка транспортного уровня (поставщик: поставщик TCP, ошибка: 0 - существующее соединение было принудительно закрыто удаленным хостом.)».

Первое исключение возникает для другого экземпляра DataCOntext, а затем для всех тех, которые затем следуют.

После некоторых исследований и запросов в этом thread, я обнаружил, что причина в том, что я не располагал DataContexts. После того, как я начал это делать, он исчез.

3

Походит возможно состояние гонки, или, возможно, редко ошибки, что только коррелирует с высокой интенсивностью движения, потому что, когда большинство ваших запросов.

Смежные вопросы