Pregunta

Tengo ELMAH de trabajo en mi (Cassini) servidor de desarrollo, y era bastante contento con él, pero ahora que estoy tratando de mover todo a mi servidor de producción (IIS 7), las miradas de luna de miel como estar terminado.

Tengo más allá de la " Gotcha" con IIS7 , que francamente podría haber sido mejor puesto de manifiesto en la documentación, y si sólo tiene que utilizar el registro en memoria entonces funciona.

Sin embargo, estoy tratando de conseguir que se utilice el registro de SQL Server (como lo hago en mi sistema de desarrollo), y estoy recibiendo un error en la línea de:

  

El permiso de ejecución fue negado en el objeto ELMAH_GetErrorsXml

Bueno, está bien. Yo sé cómo conceder permisos de base de datos, pero estoy realmente tratando de entender lo que al usuario y que procsos / mesas que necesito para conceder acceso a almacenados.

Lo que realmente me confunde es que yo no tenía que hacer nada como esto para conseguir que funcione en mi servidor de desarrollo. La única diferencia que veo es que en mi servidor de desarrollo que parece conectar como NT AUTHORITY \ IUSR, mientras que en mi servidor de producción que parece conectar como NT AUTHORITY \ NETWORK SERVICE. (Es sólo mediante una conexión de confianza, así que no he configurado explícitamente para hacer eso - supongo que tiene que ver con el servidor web). Actualizar : He puesto estableció que debido a que estoy usando Cassini, en realidad fue de sesión como yo (un administrador) y no IUSR, lo que explica por qué no he tenido ningún problema de permisos.

En mi servidor de desarrollo, la cuenta IUSR es un miembro de la función de base de datos pública, y tiene acceso a la base de datos necesaria (de nuevo como "público"). No hay concesión es explícita de permisos a nivel de objeto. . [Véase la actualización anterior - esto es irrelevante]

En mi servidor de producción, he añadido el servicio de red exactamente de la misma manera (papel base de datos pública, acceso explícito a la base de datos como "público"). Sin embargo, me sale este error de permiso. ¡¡¿Por qué?!! [Véase la actualización anterior - la única razón por la que No conseguir un error de permiso se debe a que estoy corriendo como administrador].

Y, por supuesto, si el hecho de que funciona a nivel local es simplemente "suerte", necesitaré saber qué SPS / mesas de conceder acceso a. Mi conjetura sería los 3 SP y los no de la mesa, pero sería bueno (de nuevo) para ver algún tipo de documentación que hace que esta explícita.

¿Fue útil?

Solución

¿Usted está proporcionando ELMAH con un connectionstring completo en el web.config? Si es así, usted debe saber exactamente lo db usuario para conceder permisos a, ¿verdad? Y sí, el permiso sería para ejecutar los tres procedimientos almacenados ELMAH ...

Esta es una configuración que he utilizado:

<elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah" />
</elmah>

<connectionStrings>
    <add name="elmah" connectionString="Data Source=XXX;Initial Catalog=XXX;User Id=XXX;Password=XXX;" providerName="System.Data.SqlClient" />
</connectionStrings>

Otros consejos

ejemplo de SQL necesarias para dar permiso de ejecución para el usuario USER_NAME:

GRANT EXECUTE ON ELMAH_GetErrorsXml TO USER_NAME
GRANT EXECUTE ON ELMAH_GetErrorXml TO USER_NAME
GRANT EXECUTE ON ELMAH_LogError TO USER_NAME
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top