944 063 154 carrito-compra-linube

ASP.NET con IIS 7.5 y Plesk 9.3

Publicado enGeneral

Ya está disponible la nueva versión del panel de control de Plesk que es totalmente compatible con ASP.NET. Con esta nueva versión del famoso panel de control hemos detectado que, a la hora de tratar de instalar Plesk 9.3 sobre Windows Server 2008 R2,  se produce un error. Este fallo nos alerta de que»ASP.NET no está autorizado para acceder al recurso solicitado» (is not authorized to access the requested resource).

El error que se nos muestra es el siguiente:


 Server Error in '/mssql' Application.
 --------------------------------------------------------------------------------

 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
 Description: An unhandled exception occurred during the execution of
 the current web request. Please review the stack trace for more
 information about the error and where it originated in the code.

 Exception Details: System.UnauthorizedAccessException: Access is
 denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

 ASP.NET is not authorized to access the requested resource. Consider
 granting access rights to the resource to the ASP.NET request
 identity. ASP.NET has a base process identity (typically
 {MACHINE}ASPNET on IIS 5 or Network Service on IIS 6) that is used if
 the application is not impersonating. If the application is
 impersonating via , the identity will be
 the anonymous user (typically IUSR_MACHINENAME) or the authenticated
 request user.

 To grant ASP.NET access to a file, right-click the file in Explorer,
 choose "Properties" and select the Security tab. Click "Add" to add
 the appropriate user or group. Highlight the ASP.NET account, and
 check the boxes for the desired access.

 Source Error:

 An unhandled exception was generated during the execution of the
 current web request. Information regarding the origin and location of
 the exception can be identified using the exception stack trace below.

 Stack Trace:

 [UnauthorizedAccessException: Access is denied. (Exception from
 HRESULT: 0x80070005 (E_ACCESSDENIED))]

 [FileLoadException: Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]
 System.Reflection.Assembly._nLoad(AssemblyName fileName, String
 codeBase, Evidence assemblySecurity, Assembly locationHint,
 StackCrawlMark&; stackMark, Boolean throwOnFileNotFound, Boolean
 forIntrospection) +0
 System.Reflection.Assembly.nLoad(AssemblyName fileName, String
 codeBase, Evidence assemblySecurity, Assembly locationHint,
 StackCrawlMark&; stackMark, Boolean throwOnFileNotFound, Boolean
 forIntrospection) +43
 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,
 Evidence assemblySecurity, StackCrawlMark&; stackMark, Boolean
 forIntrospection) +127
 System.Reflection.Assembly.InternalLoad(String assemblyString,
 Evidence assemblySecurity, StackCrawlMark&; stackMark, Boolean
 forIntrospection) +142
 System.Reflection.Assembly.Load(String assemblyString) +28

 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String
 assemblyName, Boolean starDirective) +46

 [ConfigurationErrorsException: Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]

 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String
 assemblyName, Boolean starDirective) +613

 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo
 ai) +57

 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection
 compConfig) +178
 System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath
 configPath, Boolean supportLocalization, String outputAssemblyName) +54

 System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean  isPrecompiledApp)
 +232
 System.Web.Compilation.BuildManager.CompileGlobalAsax() +51
 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()  +337

 [HttpException (0x80004005): Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]

 System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
 +58
 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()  +512

 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager
 appManager, IApplicationHost appHost, IConfigMapPathFactory
 configMapPathFactory, HostingEnvironmentParameters hostingParameters)
 +729

 [HttpException (0x80004005): Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]
 System.Web.HttpRuntime.FirstRequestInit(HttpContext context)  +8897659
 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)  +85

 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest  wr,
 HttpContext context) +333

¿Cómo podemos corregir el error de ASP.NET?

El error se podía reproducir al tratar de ejecutar una aplicación desde el panel de control Plesk. En nuestro caso, el fallo se producía cada vez que tratábamos de lanzar el administrador web para bases de datos SQL Server ASP.NET Enterprise Manager. Aunque también se puede mostrar este error al intentar ejecutar MyLittleAdmin desde el panel Plesk.

Si tratamos de corregir el error desde la herramienta Plesk Reconfigurator no conseguiremos solucionar el problema. Esto se debe a que los permisos necesarios para resolverlo, no están añadidos. Por ello, tendremos que añadir estos permisos a mano.

Lo único que tenemos que hacer es editar el archivo DiskSecurity.xml que podemos encontrar dentro de la carpeta %PLESK_DIR%etcDiskSecurity. A este archivo tendremos que añadirle el siguiente contenido dentro del tag Entries:


<!-- Permisos a Assembly para ASP.NET Enterprise manager -->

<Entry AccounType="1" Account="Psacln" Path="C:Windowsassembly" AceFlags="FilesOnly" AccessMask="Read" EntryFlags="0x0" /&>

Finalmente hay que ejecutar el siguiente comando en bash, de forma que se apliquen los cambios necesarios en los permisos:


"%plesk_bin%applysecurity" --apply

 

Recuerda que en Linube disponemos de servicios especialmente diseñados para ASP.net MVC y PHP bajo Windows para facilitar el funcionamiento de tus proyectos Windows y optimizarlos al máximo.

Aunque pueda parecer contradictorio, debido a los distintos errores que hemos tenido que subsanar, desde Linube te aconsejamos tener siempre SQL Server actualizado, así como el resto de componentes instalados en el servidor.