¿Cómo se configura IIS 7 para permitir una conexión de base de datos remota desde un servidor Web ISAPI

StackOverflow https://stackoverflow.com/questions/3902845

Pregunta

Tengo una aplicación de servicio Web nativo (ISAPI) que he construido con Delphi 2010. En este momento, sólo expone dos métodos. La primera de ellas, echoString, está diseñado para darme retroalimentación que el servicio web está funcionando correctamente, y se añade un par de caracteres a la cadena que le envío a ella desde mi cliente de servicios Web Delphi. Esto siempre funciona bien.

El segundo método expuesto es el que estoy realmente interesado en. Paso este método una cadena que contiene el contenido XML de una ClientDataset. Del lado del servidor, mi código toma este XML y lo inserta en un ClientDataset, después de lo cual los Mensajes estos datos a una base de datos de servidor.

Estoy utilizando componentes IBEXPRESS (IBDatabase, IBTransaction, IBQuery, etc.) para conectarse a una base de datos InterBase en el lado del servidor.

El problema es que tan pronto como intento conectar el componente IBDatabase a su base de datos, el método falla Web. Creo que he descartado todas las demás fuentes de este error. Puedo crear y poblar la ClientDataset con enviados XML de una bastante grande ClientDataSet desde el cliente que incluye conjuntos de datos anidadas con ningún problema (estoy usando la unidad MidasLib, por lo que el ClientDataSet no está tratando de cargar un archivo DLL). Puedo crear y configurar, a falta de la conexión a la IBDatabase y sus diversos componentes. Una vez más, sin problemas. Tan pronto como conjunto de propiedades del componente conectado a True IBDatabase desde el servicio web, falla.

Estoy funcionando IIS 7.5 en Windows 7 de 64 bits último (en mi máquina de desarrollo). He tratado de concesión de derechos de control total a todo el mundo (así como específicamente a IIS_IUSRS) tanto al específica ISAPI DLL, así como a todo el directorio en el que reside el servicio Web. Esto no resuelve el problema.

Sospecho que esto es enteramente una cuestión de privilegios con IIS 7. ¿Qué puedo hacer para permitir que mi servicio Web ISAPI para conectarse a la API del cliente InterBase para que pueda utilizar el servicio Web para escribir a mi servidor de base de datos? '' '' '' '' '' '
Post Script: Parece ser que la conexión a Interbase desde el servicio Web no es el problema. Todavía estoy rastreando la causa exacta, pero ahora he sido capaz de conectarse correctamente a Interbase desde el servicio Web. Voy a actualizar este post una vez que sé la causa, pero esta cuestión ya no es válida. '' '' ' '
Estoy marcando la respuesta de Bob como la correcta. La cadena de conexión que estaba mal. En realidad (y esto es embarazoso, pero prefiero estar avergonzado de lo engañosa), Conseguí el pedazo de un por cláusula.

guardé mi información de conexión en cadenas de recursos. Hice la asignación en un por cláusula. El nombre de la cadena de recursos para la propiedad DatabaseName era NombreBaseDatos. El por cláusula causó la propiedad DatabaseName que se asignará a sí mismo, en lugar del valor en la cadena de recursos. He arreglado el problema por prologar la cadena de recursos DatabaseName con el nombre de la unidad (es decir, DatabaseName: = IBModUnit.DatabaseName;).

¿Fue útil?

Solución

Asumo puede utilizar la misma cadena de conexión para conectarse a la base de datos InterBase desde una aplicación de "nativo" VCL Formas en esa máquina?

Una pregunta tonta tal vez, pero no se ejecuta como un servicio InterBase? (De lo contrario, el archivo DLL ISAPI no será capaz de "ver" que se conecte a él).

Otros consejos

[Editar]
Lo siento. Escribí una estupidez lo que sugiere que IIS no tendrá permisos de red Y me parece que no puede eliminar este post!

Pero - lo hice en algún lugar de lectura que los permisos en versiones posteriores de Windows se han reducido un poco y la cuenta de sistema local ya no tiene acceso a la red. En vista de que el título del post contiene "a distancia" tal vez lo que necesita para conceder permisos adicionales a su DLL o servicio y / o el servicio Interbase o uno de los otros archivos involucrados?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top