2010-06-12 31 views
12

He creado un servicio OData/WCF utilizando Visual Studio 2010 en Windows XP SP3 con todos los parches actuales instalados.OData/WCF Data Service - HTTP 500 Error

Cuando hago clic en "ver en el navegador", el servicio se abre y veo las 3 tablas de mi modelo EF. Sin embargo, cuando agrego un nombre de tabla ("Comandos" en este caso) al final de la cadena de consulta, en lugar de ver los datos de la tabla, aparece un error HTTP 500. (Este error (HTTP 500 Internal Server Error) significa que el sitio web que está visitando tuvo un problema en el servidor que impidió la visualización de la página web).

No solo he seguido los ejemplos de 2 sitios, sino que también he intentado ejecutar la aplicación de muestra que el póster del blog me envió (que funciona en su máquina) y todavía no tengo suerte.

El blog está en Exposing OData from an Entity Framework Model

¿Alguien tiene una idea de por qué esto está ocurriendo y cómo resolverlo?

Aquí está la salida de la "Ver en el explorador":

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
- <service xml:base="http://localhost:1883/VistaDBCommandService.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app"> 
- <workspace> 
    <atom:title>Default</atom:title> 
- <collection href="Commands"> 
    <atom:title>Commands</atom:title> 
    </collection> 
- <collection href="Databases"> 
    <atom:title>Databases</atom:title> 
    </collection> 
- <collection href="Statuses"> 
    <atom:title>Statuses</atom:title> 
    </collection> 
    </workspace> 
    </service> 

=========================== ==

Gracias,

Eric

============

actualización:

En un esfuerzo por conseguir este trabajo, tengo:

  1. removido y reinstalado IIS
  2. Ran el% windir% \ Microsoft.Net \ Framework \ v4.0.30319 \ aspnet_regiis -i -enable
  3. Se ejecutó el comando% WINDIR% \ Microsoft.Net \ Framework \ v4.0.30319 \ ServiceModelReg.exe -r.
  4. Creé una nueva solución y seguí las instrucciones con mucho cuidado para asegurar que I no arruinara nada.

Después de todo esto, sigo recibiendo el mismo error HTTP 500, sin entradas de ningún tipo en el Visor de eventos.

¿Alguna otra idea?

Gracias,

Eric

Respuesta

16

me di cuenta de que mi problema era un problema con la apertura de la base de datos. La forma en que lo descubrí fue agregar lo siguiente a servicename.svc.cs archivo en el método InitializeService:

config.UseVerboseErrors=true;

Gracias a todos los que trataron de ayudar.

Eric

1

500 siempre significa que hubo una excepción no controlada en el servicio. Ve a buscar en el registro de eventos de Windows para ver cuál fue ese error.

+2

John, No tengo ninguna entrada en el registro de eventos. Para asegurarme, borre los eventos existentes (toda la información, ninguno relacionado con la aplicación) y luego volví a ejecutar la aplicación. Los mismos resultados, no hay entradas en el registro de eventos. Eric – Eric

+0

@Eric: miró en el servidor, ¿verdad? –

+1

Sí, lo estoy ejecutando localmente en mi sistema de desarrollo. Eric – Eric

5

config.UseVerboseErrors=true; me ayudó a encontrar el problema. El problema era que estaba usando la autenticación de Windows para la conexión a la base de datos. Después de cambiar a Autenticación de SQL Server, todo funcionó bien.

0

Si está utilizando el archivo de datos SQL Server Compact (como NorthWind.sdf) debe otorgar permisos de escritura al grupo IUSRS.

Ej: Si está utilizando Northwind.sdf en DataDirectory decir yourweb/App_Data entonces usted necesita para dar permisos de escritura a _IUSRS grupo desde la consola de IIS o desde el Explorador de Windows.

1

También puede activar Error de seguimiento de solicitudes para la aplicación Web en IIS

por lo que recibirá la ejecución traza detallado en archivos XML de IIS cuando se produce un error 500

hay un buen artículo aquí explicando cómo No se ha podido configurar el seguimiento de solicitudes en IIS:

Using Failed Request Tracing to Trace Rewrite Rules

HTH Cédric

Cuestiones relacionadas