2008-11-27 14 views
5

Vi algo sobre la necesidad de tener el conjunto disponible para el tipo del primer argumento pasado a la función. Creo que es así, no puedo entender qué me estoy perdiendo.¿Por qué System.Web.Hosting.ApplicationHost.CreateApplicationHost arroja System.IO.FileNotFoundException?

Este código está en un servicio. Estaba ejecutando el servicio en la cuenta de usuario 'SERVICIOS DE RED', cuando cambié la cuenta a la de la sesión con la que inicié sesión funcionó bien. Pero, ¿cuál es la diferencia, y cómo puedo hacer que funcione para el usuario de SERVICIOS DE RED.

Respuesta

-3

Finalmente encontré una respuesta: parece que el tipo dado a ApplicationHost.CreateApplicationHost() debe estar en un ensamblaje ubicado en el GAC. Simple y estúpido :)

+0

Genial. ¿Encontraste esto en alguna documentación que puedo ver ... o fue por ensayo y error? –

+3

rechazado porque el ensamblaje no necesita estar en el GAC – Simon

+0

De hecho, no es necesario colocar el ensamblaje en el GAC. Esto tiene que ver con el encuadernado de la Asamblea.Ponga el inicio de sesión de fusión y puede ver exactamente dónde va mal –

0

El servicio de red es una cuenta integrada que tiene acceso muy limitado (por una buena razón) a los recursos. Probablemente no deberías cambiarlo porque abrirás tu sitio a otras posibles vulnerabilidades.

Si es necesario, consulte here para saber cómo configurarlo para tener acceso a otros recursos.

0

Creo que esto está más relacionado con la cuenta de Servicios de red o la Seguridad de acceso de código y no tiene nada que ver con el GAC. Estoy usando CreateApplicationHost() para crear un host ASP.Net en un proyecto de MS Test y funciona como un campeón. El tipo que utilizo no está en un ensamblaje que se despliega en el GAC o que incluso tiene un nombre fuerte (se define en TestProject).

Tienes que amar este tipo de inconsistencias ... mantiene la vida interesante.

1

Tuve este problema también. Creo que el tiempo de ejecución está intentando cargar el ensamblado que contiene el tipo pasado como el primer argumento para CreateApplicationHost y no lo puede encontrar

Por algún extraño motivo funcionó cuando creé un directorio bin en mi directorio físico (el tercer argumento) que contiene el exe o ensamblado que contiene el tipo que estaba intentando cargar.

No sé por qué no se ve en el directorio de trabajo primero ...

4

copiar el binario a la carpeta bin de la aplicación web también va a arreglar esto.

2

Por cierto, la página this tiene un poco más de información sobre este tema y una posible forma de solucionar el problema de GAC frente a la copia de su conjunto a la carpeta bin. La página tiene algunos años en este punto, pero aún parece relevante.

0

no pude conseguir que esto funcione, ya sea en .NET2 en Windows 2008 (64 bits, pero no creo que importaba). Funcionó cuando mi usuario era administrador local, pero no quiero que mis servicios se ejecuten con privilegios elevados. Busqué en alto y bajo y finalmente lo resolví (sin agregar el ensamblado al GAC, igualmente malo para mí): crear un archivo web.config para mi sitio alojado automáticamente que configura la carpeta bin para sondear. Antes no tenía un archivo web.config ya que todos mis sitios se manejaban en código. Así es como se ve ahora mi archivo de configuración:

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin"/> 
    </assemblyBinding> 
    </runtime> 
</configuration> 
Cuestiones relacionadas