Estoy jugando con WCF Data Services (ADO.NET Data Services). Tengo un modelo de marco de entidad apuntado a la base de datos AdventureWorks.¿Cómo puedo alojar correctamente un servicio de datos WCF que se conecta a SQLServer en IIS? ¿Por qué recibo errores?
Cuando depuro mi archivo svc desde Visual Studio, funciona muy bien. Puedo decir /awservice.svc/Customers y recuperar el feed ATOM que espero.
Si publico el servicio (alojado en una aplicación web ASP.NET) en IIS7, la misma cadena de consulta devuelve un error 500. La página raíz svc funciona como se esperaba y devuelve ATOM con éxito. La ruta/Customers falla.
Esto es lo que mis donaciones se ven como en el archivo SVC:
public class AWService : DataService<AWEntities>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
Actualización: Habilité errores detallados y sale el siguiente en el mensaje XML:
<innererror>
<message>The underlying provider failed on Open.</message>
<type>System.Data.EntityException</type>
<stacktrace>
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(
...
...
<internalexception>
<message>
Login failed for user 'IIS APPPOOL\DefaultAppPool'.
</message>
<type>System.Data.SqlClient.SqlException</type>
<stacktrace>
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, ...
Estoy ejecutando tanto IIS como SQLServer en mi máquina. Yo * creo * Estoy usando Autenticación de Windows en ambos. Sé SQLServer seguro. ¿De alguna forma puedo verificar IIS? –
@Pharabus - Eres un genio. Tuve que modificar la cuenta de identidad utilizada por DefaultAppPool. Aquí hay un artículo sobre cómo hacer esto: http://technet.microsoft.com/en-us/library/cc771170%28WS.10%29.aspx. De manera predeterminada, usaba una cuenta con privilegios bajos. Configurarlo en LocalSystem hizo el truco. –