asp.net-mvc - route - tag helpers asp net core
Error de ASP.NET-MVC(IIS6) en tráfico intenso: el molde especificado no es válido (2)
Acabo de lanzar mi pequeña aplicación web en mi humilde servidor dedicado (Win2003) ... ejecutando ASP.NET MVC, LINQ2SQL, SQL Express 2005 e IIS6 (configuración con mapeo comodín )
El sitio web funciona sin problemas el 90% de las veces. Sin embargo, en un tráfico relativamente alto, LINQ2SQL arroja el error: el lanzamiento especificado no es válido
Este error SÓLO se lanza a alto tráfico. NO TENGO NINGUNA IDEA de cómo o exactamente por qué sucede esto. El almacenamiento en caché no eliminó por completo este problema.
¿Alguien ha visto este problema antes? ¿Hay algún ajuste secreto de SQL Server que debería haber hecho? ¿O al menos, alguna idea sobre cómo diagnosticar este problema? porque estoy fuera!
Naimi
Stacktrace (del registro de eventos):
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)
Suena como una condición de carrera, o tal vez un error raro que solo se correlaciona con un alto tráfico porque cuando se produce la mayoría de sus solicitudes.
Tuvimos un problema similar con LINQ al obtener "No se puede lanzar el objeto de tipo ''System.Int32'' para escribir ''System.String''" y "El molde especificado no es válido".
Ejemplos de 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)
Solíamos obtener estas excepciones si primero recibimos una excepción como esta "System.InvalidOperationException: ya hay un DataReader abierto asociado con este comando que debe cerrarse primero". o "Se ha producido un error de nivel de transporte al recibir los resultados del servidor. (Proveedor: Proveedor de TCP, error: 0 - Una conexión existente fue cerrada a la fuerza por el host remoto)".
La primera excepción ocurre para una instancia diferente de DataCOntext para todos los que están siguiendo.
Después de investigar un poco y preguntar en este hilo , descubrí que la razón era que no disponía de DataContexts. Después de que empecé a hacer eso, desapareció.