2012-08-24 19 views
6

He estado teniendo este problema durante varios días (ahora corregido y solución notada para cualquier persona que se encuentre con este problema y esté tirando de sus cabellos).MVC WebAPI que devuelve el error 500 sin información

Después de que mi última ronda de cambios de código a mi aplicación Silverlight que utiliza MVC4 WebAPI para datos, estaba teniendo un problema con una de mis acciones HttpGet que devolvía IQueryable<oneofmyclasses>. Usando Fiddler2 para ver la solicitud, pude ver que estaba obteniendo un error interno del servidor (500), sin texto corporal para explicar por qué. No recibí errores lanzados en mi Acción.

Comprobación 1: Comprobé que mi acción estaba realmente llegando a la línea return collection.AsQueryable(); sin errores. Fue

Comprobación 2: comprobé que mis datos se serializar a JSON sin errores utilizando el código (g es mi colección):

var json = new JsonMediaTypeFormatter(); 
      json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects; 
      ObjectContent<IEnumerable<Model.MenuGroup>> responseContent = new ObjectContent<IEnumerable<Model.MenuGroup>>(g, json); 
      MemoryStream ms = new MemoryStream(); 

      responseContent.CopyToAsync(ms).Wait(); 
      ms.Position = 0; 
      var sr = new StreamReader(ms); 
      var str = sr.ReadToEnd(); 

Esto también trabajó. También lo probé usando el formateador XML, aunque estaba bastante seguro de que solo usaba JSON (no se puede tener mucho cuidado).

Verificar 3: Habilitado la depuración de .Net Framework. Esta vez, cuando se produjo el error (en HttpApplication.cs) VS 2012 lo atrapó.

Mi error:

A pesar de haber marcado la propiedad con estos atributos,

[XmlIgnore] 
[IgnoreDataMember] 
[JsonIgnore] 

la Fuente .Net se lo recuperamos en una de mis propiedades. La captura, era una propiedad de solo escritura. Simplemente agregué

get { return null; } 

y el problema se solucionó.

Probablemente debería haber hecho Check 3 primero, pero mi experiencia previa con este error ha demostrado que generalmente es un error al intentar serializar mis objetos, por lo que tenía un poco de scratcher cuando lo serializaban correctamente y el error persistió.

+0

Me alegro de que pudieras resolverlo. Debe escribir el cheque que lo resolvió como una respuesta. :) –

+0

http://stackoverflow.com/questions/10944938/asp-net-web-api-non-descriptive-500-internal-server-error/34352049#34352049 puede ayudar. – GGleGrand

Respuesta

6

Cómo lo resolví:

Habilitado .Net depuración marco. Herramientas -> Opciones -> Depuración -> Comprobar 'Habilitar el paso de origen de .NET Framework'

Esta vez cuando ocurrió el error (en HttpApplication.cs) VS 2012 lo atrapó.

Cuestiones relacionadas