2011-02-17 39 views
8

Utilizo la clase Microsoft.Web.Administration.ServerManager para administrar un sitio web en un servicio de Windows.applicationHost.config Error: No se puede escribir el archivo de configuración debido a permisos insuficientes con la configuración compartida de IIS

utilizo la suplantación en mi código, con un usuario administrador, el usuario tiene derecho a modificar mi applicationHost.config pero siempre me sale el siguiente error cuando hago un .CommitChanges();.

Hay un ejemplo de mi código.

using (ServerManager svr = ServerManager.OpenRemote(args.IISName)) 
     {   
     Site currentSite = svr.Sites.Where(item => item.Id == args.WebSite.Id).FirstOrDefault();    
     currentSite.Applications[0].VirtualDirectories[0].PhysicalPath = args.WebSite.PhysicalPath; 
     svr.CommitChanges();   

     } 

encuentro this solutions, pero mis propiedades DCOM objeto es bloqueo

Unhandled exception has occured in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately. FileName \?\UNC[MY PATH]\applicationHost.config Error: Cannot write configuration file due to insufficient permissions

Mi disposición es Windows 2008 R2, IIS 7.5, 3.5 y mi marco applicationHost.config está en una SAN

¿Qué podría intentar?

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box. 

************** Exception Text ************** 
System.UnauthorizedAccessException: Filename: \\?\[MY PATH]\applicationHost.config 
Error: Cannot write configuration file due to insufficient permissions 


    at Microsoft.Web.Administration.Interop.IAppHostWritableAdminManager.CommitChanges() 
    at Microsoft.Web.Administration.ConfigurationManager.CommitChanges() 
    at Microsoft.Web.Administration.ServerManager.CommitChanges() 
    at Nms.IIS.Business.Manager.IISManager70.UpdateWebSiteEntity(UpdateWebSiteEntityArgs args) 
    at Nms.IIS.Business.Service.IISService70.UpdateWebSiteEntity(UpdateWebSiteEntityArgs args) 
    at IISSwitcher.Form1.btnProccess_Click(Object sender, EventArgs e) in C:\Form1.cs:line 70 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 


************** Loaded Assemblies ************** 
mscorlib 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4952 (win7RTMGDR.050727-4900) 
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll 
---------------------------------------- 
IISSwitcher 
    Assembly Version: 1.0.0.0 
    Win32 Version: 1.0.0.0 
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/IISSwitcher.exe 
---------------------------------------- 
System.Windows.Forms 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll 
---------------------------------------- 
System 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll 
---------------------------------------- 
System.Drawing 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll 
---------------------------------------- 
Nms.IIS.Business 
    Assembly Version: 1.0.295.8874 
    Win32 Version: 1.0.295.8874 
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Nms.IIS.Business.DLL 
---------------------------------------- 
Nms.Core 
    Assembly Version: 1.0.1954.8874 
    Win32 Version: 1.0.1954.8874 
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Nms.Core.DLL 
---------------------------------------- 
System.Configuration 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll 
---------------------------------------- 
System.Xml 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll 
---------------------------------------- 
Microsoft.Practices.Unity 
    Assembly Version: 1.2.0.0 
    Win32 Version: 1.2.0.0 
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Microsoft.Practices.Unity.DLL 
---------------------------------------- 
Microsoft.Practices.Unity.Interception 
    Assembly Version: 1.2.0.0 
    Win32 Version: 1.2.0.0 
    CodeBase: file://Microsoft.Practices.Unity.Interception.DLL 
---------------------------------------- 
Microsoft.Practices.ObjectBuilder2 
    Assembly Version: 2.2.0.0 
    Win32 Version: 2.2.0.0 
    CodeBase: file://Microsoft.Practices.ObjectBuilder2.DLL 
---------------------------------------- 
System.Core 
    Assembly Version: 3.5.0.0 
    Win32 Version: 3.5.30729.4926 built by: NetFXw7 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll 
---------------------------------------- 
Nms.Core.resources 
    Assembly Version: 1.0.1954.8874 
    Win32 Version: 1.0.1954.8874 
    CodeBase: file://Nms.Core.resources.DLL 
---------------------------------------- 
Unity_ILEmit_InterfaceProxies 
    Assembly Version: 0.0.0.0 
    Win32 Version: 1.2.0.0 
    CodeBase: file://Microsoft.Practices.Unity.Interception.dll 
---------------------------------------- 
Microsoft.Web.Administration 
    Assembly Version: 7.0.0.0 
    Win32 Version: 6.1.7600.16385 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Web.Administration/7.0.0.0__31bf3856ad364e35/Microsoft.Web.Administration.dll 
---------------------------------------- 
System.Runtime.Serialization 
    Assembly Version: 3.0.0.0 
    Win32 Version: 3.0.4506.4926 (NetFXw7.030729-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Serialization/3.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll 
---------------------------------------- 

************** JIT Debugging ************** 
To enable just-in-time (JIT) debugging, the .config file for this 
application or computer (machine.config) must have the 
jitDebugging value set in the system.windows.forms section. 
The application must also be compiled with debugging 
enabled. 

For example: 

<configuration> 
    <system.windows.forms jitDebugging="true" /> 
</configuration> 

When JIT debugging is enabled, any unhandled exception 
will be sent to the JIT debugger registered on the computer 
rather than be handled by this dialog box. 

Respuesta

6

Para desbloquear el objeto de propiedades dcom, solo tiene 2 pasos para realizar.

Paso 1 - Grant le 'Control total' en la 'Ahadmin.dll':

  • Goto el servidor IIS y navegue a la carpeta 'C: \ windows \ system32 \'
  • Localice 'Ahadmin .dll 'y haga clic derecho en él para abrir cuadro de propiedades
  • Goto '' ficha y otorgan a su usuario NT 'Control absoluto de Seguridad'
  • Si usted no es capaz de conceder 'Control absoluto', ir a la' Pestaña Propietario y agregue su usuario de NT o un grupo de administración al que sea miembro y haga clic en 'Aplicar' Y de regreso a la pestaña 'Seguridad' que le conceda 'Control absoluto de'

Paso 2 - Grant le 'Control total' en la clave de registro:

  • En el servidor IIS 'registro abierto Editor '(comando de ejecución: regedit).
  • Coloque el cursor sobre la raíz en el panel izquierdo.
  • Abra un cuadro de búsqueda y escriba 'ahadmin' y haga clic en buscar.
  • El registro encontrará una clave en el panel derecho.Haga clic derecho sobre la carpeta principal de esta llave y abrir el cuadro de propiedades
  • pestaña Goto 'Seguridad' y concede a su usuario NT 'Control absoluto de'
  • Si usted no es capaz de conceder 'Control absoluto', Ir a la pestaña 'propietario' y añadir su usuario NT o un grupo de administración que eres miembro y haga clic en 'Aplicar' y de regreso a la pestaña 'Seguridad' que le conceda 'Control absoluto de'

    ahora puede edite su objeto de propiedades dcom

    Si el objeto dcom porperties todavía está bloqueado, solo espere unos minutos y pruebe agai norte.

    Después de eso, solo tiene que seguir el procedimiento here.

+0

Esto funcionó para mí, extraño el ** Autoarranque de WCF ** quejándose al aplicar propiedades. Error: * "Ocurrió un error al guardar la configuración. Revise los detalles para obtener información adicional. Los cambios se pueden volver a aplicar después de cerrar este diálogo. Nombre de archivo: \\? \ C: \ Windows \ system32 \ inetsrv \ c... \ ApplicationHost. Error de configuración: no se puede escribir el archivo de configuración "* – SliverNinja

0

Asegúrese de configuración de seguridad que tanto el del archivo y los ajustes de seguridadde las acciones permiten al usuario suplantación de modificar el archivo. Como está accediendo al archivo de configuración con una ruta UNC, necesita permisos en ambos niveles.

+0

En esta línea, verifique los permisos efectivos en el archivo (algo así como haga clic con el botón derecho, propiedades, seguridad, permisos avanzados y efectivos). Eso debería darle la lista autorizada de lo que el usuario puede hacer en el nivel del sistema de archivos (NTFS). –

+0

Todo es correcto, pero todavía no funciona –

0

Si el directorio virtual está asignado a una carpeta compartida. Mire los permisos del recurso compartido, de forma predeterminada en Windows 7/w2k8, los recursos compartidos se crean con: Todos (Lectura). Cambiando los permisos del recurso compartido a: Todos (Control total)

Esto permite que IIS haga lo que necesita a través del recurso compartido, ya que no utiliza la ruta física completa.

5

En nuestro caso, el disco del servidor estaba lleno. Agregamos espacio de disco adicional y el problema está resuelto.

0

Asegúrese de que la carpeta con el proyecto NO esté encriptada. Visual Studio tiene problemas para trabajar con carpetas cifradas.

Tengo mi carpeta de usuario encriptada y los proyectos no se abrirán hasta que marque estas carpetas como no cifradas. Es una tontería que VS no proporcione un error significativo que indique que debe eliminar el cifrado de la carpeta del proyecto.

Para eliminar el cifrado, haga clic con el botón secundario en la carpeta del proyecto, luego en Avanzado, luego desmarque la casilla Encriptar. Aplique los cambios a la carpeta misma y a todas las carpetas y archivos anidados.

Disable encryption

2

He borrado de archivos existentes applicationhost.config de mi solución y vuelve a cargar de nuevo la solución. La solución creó el nuevo archivo ApplicationHost.config en sí.

Resolvió mi problema.

Cuestiones relacionadas