Flujo de trabajo de Windows - Servicio web - Directorio de datos de aplicación - Base de datos
-
05-07-2019 - |
Pregunta
Solución
- WorkflowProject
& nbsp; & nbsp; - Workflow1
& nbsp; & nbsp; - Workflow2
- WebProject (WAP)
& nbsp; & nbsp; - App_Data
& nbsp; & nbsp; & nbsp; & nbsp; - MyDatabase.vdb3
& nbsp; & nbsp; - MyWebService.asmx
& nbsp; & nbsp; - Web.Config
Ok, entonces ... ese es el esquema " básico " del proyecto. La base de datos, se almacena en el sitio web, y es una base de datos VistaDB (esto también podría ser un MSAccess o SQLite Database). En el sitio web, podría codificar contra la base de datos. Yo podría tener | DataDirectory | en mi cadena de conexión.
El proyecto WORKFLOW es independiente del sitio web. El MyWebService.asmx es un " stub " para llamar al servicio web basado en Workflow.
How ¿abro la base de datos en el directorio del sitio web App_Data ? En este momento, tengo el valor codificado (es decir, @ " E: \ datadirectory \ database.vdb3 "), pero este no es el preferido y solo funcionaría en mi máquina de desarrollo.
Ni siquiera puedo pasar la ubicación de la base de datos, ya que el servicio web (el archivo .asmx) es solo de 1 línea y es un código auxiliar para que la persona que llama ingrese al flujo de trabajo. Estoy realmente en una pérdida en cuanto a cómo proceder.
¿Solución? Mejores prácticas ? Enlaces?
Solución 2
No pude hacer que VirtualPathUtility funcione. Aquí está la solución que encontré que funcionó:
string s = AppDomain.CurrentDomain.GetData("DataDirectory") as string;
Eso obtiene la ruta absoluta al directorio App_Data.
Otros consejos
Debería echar un vistazo a " VirtualPathUtility "
sustituye el resultado de:
VirtualPathUtility.ToAbsolute("~/App_Data/db.vdb3");
en tu cadena de conexión.