none
Configurar acceso anonimo en SSRS 2008 R2, error Message: Could not load file or assembly 'ReportingServicesWebServer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. Failed to grant permission to execute. RRS feed

  • Pregunta


  • Hola, Estoy tratando de configurar el acceso anonimo en SSRS, para ello es necesario crear dll customizada que permita este acceso, el problema es que he generado la DLL y la configuraciones necesarias sobre los archives de configuracion de SSRS en base al siguiente tutorial: http://blogs.msdn.com/b/jameswu/archive/2008/07/15/anonymous-access-in-sql-rs-2008.aspx

    El servicio de Reporting Services inicia adecuadamente, pero cuando acceso a la URL del de mi SSRS se registra el siguiente error a nivel de eventos de Windows.

     

    Failed to initialize the AppDomain:ReportServer_ZEUS_0

    Exception: System.Web.HttpException

    Message: Could not load file or assembly 'ReportingServicesWebServer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418) (C:\Program Files\Microsoft SQL Server\MSRS10_50.ZEUS\Reporting Services\ReportServer\web.config line 19)

    StackTrace:    at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

       at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()

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

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

       at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)

       at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)

    InnerException: System.Configuration.ConfigurationErrorsException

    Message: Could not load file or assembly 'ReportingServicesWebServer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418) (C:\Program Files\Microsoft SQL Server\MSRS10_50.ZEUS\Reporting Services\ReportServer\web.config line 19)

    StackTrace:    at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)

       at System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)

       at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)

       at System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath, Boolean supportLocalization, String outputAssemblyName)

       at System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)

       at System.Web.Compilation.BuildManager.CompileGlobalAsax()

       at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()

    InnerException: System.IO.FileLoadException

    Message: Could not load file or assembly 'ReportingServicesWebServer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418)

    StackTrace:    at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)

       at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)

       at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)

       at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)

       at System.Reflection.Assembly.Load(String assemblyString)

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

    InnerException: System.Security.Policy.PolicyException

    Message: Execution permission cannot be acquired.

    StackTrace:    at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission)

       at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission)

    Puede que el problema sea que no hay usuario en context, creo que la solución puede ser pasar correctamente el usuario en el siguiente método implementado de la interfaz

     

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")]

            public void GetUserInfo(out IIdentity userIdentity, out IntPtr userId)

            {

               

                userIdentity = new GenericIdentity("dominio\\usuario");

                userId = IntPtr.Zero;

                

            }

     


    Ahias Portillo

    viernes, 4 de enero de 2013 22:18

Todas las respuestas

  • Por los errores que te salen, tiene pinta de ser un problema de CAS (seguridad de acceso a código). Podrías probar a ponerle un Strong Name a tu DLL e instalarla en el GAC; si así funciona, es una buena indicación de que por algún sitio faltaba por configurar algún permiso.

    Si aún así no funciona, activa el log de fusión (con FUSLOGVW.EXE) y comprueba qué errores salen cuando intentas acceder a SSRS. Puede que esto dé alguna pista acerca de dónde puede estar el problema.

    sábado, 5 de enero de 2013 8:30
    Moderador
  • Hola, desgraciadamente no pude hacer funcionar el acceso anónimo, con dll personalizadas. 

    Pero para simular el acceso anónimo, hago lo siguiente Creo una aplicación en ASP.NET donde en una base de datos almaceno la información de los reportes instalados en Reporting Services, cuando selecciono algunos de esos reporte básicamente, voy a otra página de asp.net, que contiene un Report Viewer, el cual recibe el nombre del reporte que debe visualizar, la información del usuario Dummy, Url del Report Server, Path principal está almacenado a nivel de base de datos, entonces configuro el report Viewer e implemento una interfaz "IReportServerCredentials", para poder enviar las credenciales para más detalle ver la siguiente informacion (IReportServerCredentials Interface), y hago el siguiente código.

    ReportViewer1.ServerReport.ReportServerCredentials = 
                new MyReportServerCredentials();



    Ahias Portillo


    miércoles, 9 de enero de 2013 3:52
  • Tomar en cuenta que el reportview debe está configurado para proceso remoto, también deshabilite Render Asíncrono y SizeToReportContent debe estar en True para que pueda funcionar en todos los exploradores.

    <asp:ReportViewer ID=”reportview01” runat=”server” Width=”100%” Height=”100%”
    AsyncRendering=”False” SizeToReportContent=”True”>
    </asp:ReportViewer>

    Muchas gracias Alberto, cuando tenga tiempo tratare de verificar que esta pasando con el ensamblado customizado para el proceso de autentificacion y autorización que estaba implementando, puede ser que el problema sea que el ensamblado no esta firmado y por eso lo considera un código inseguro.

    Saludos cordiales


    Ahias Portillo

    miércoles, 9 de enero de 2013 3:52