Otro caso con el que me he enfrentado recientemente, cómo crear o copiar archivos a una ruta física con tu servicio web pero haciéndolo portable para cualquier servidor con IIS. Pues la solución fue más sencilla de lo que pensaba. Gracias a un compañero que me sugirió utilizar las variables de entorno, conseguí acceder fácilmente a mi carpeta del IIS creando una variable de entorno y accediendo a ella con C#.
Las variables de entorno son aquellas que nos ofrecen un "atajo" para acceder a algunos directorios del sistema, como Archivos de Programa, simplemente ejecutando en la herramienta de Ejecutar o en la barra de direcciones en una ventana el siguiente código:
%ProgramFiles%Pues bien, yo me creé la variable %iisdir% para que me abriera /Inetpub/wwwroot/ y así instalar ahí lo que necesitaba.
Para acceder a las variables de entorno desde C# hay que hacer lo siguiente:
Primero añadimos el siguiente using:
using System.Collections;
Luego empezamos a obtener los valores que necesitamos:
//Ruta hasta la carpeta System32 de Windows
Console.WriteLine(Environment.SystemDirectory);
//Nombre de la máquina
Console.WriteLine(Environment.MachineName);
//Ruta del directorio desde donde se está trabajando (Esto ya lo utilizamos en un anterior post del blog)
Console.WriteLine(Environment.CurrentDirectory);
//Sistema operativo y versión
Console.WriteLine(Environment.OSVersion.ToString());
//Todas las variables de entorno y sus valores respectivos
IDictionary variablesEntorno = Environment.GetEnvironmentVariables();
foreach (DictionaryEntry de in variablesEntorno)
{
Console.WriteLine(de.Key+": "+de.Value);
}
//Y para obtener una en concreto de la cual conoces la clave, el ejemplo que yo utilicé, %issdir%:Console.WriteLine(Environment.GetEnvironomentVariable("issdir"));