none
Erro em página que cria pdf asp.net RRS feed

  • Pergunta

  • Olá comunidade, estou com o seguinte problema. Fiz um projeto em asp.net que gera um pdf com itextsharp, testei em minha base local e ate aí tudo bem. Quando importei para meu servidor e fui gerar o pdf de a seguinte mensagem de erro.

    Server Error in '/guiaST' Application.

    Security Exception

    Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 

    Exception Details: System.Security.SecurityException: That assembly does not allow partially trusted callers.

    Source Error: 
    The source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL:

    1. Add a "Debug=true" directive at the top of the file that generated the error. Example:

      <%@ Page Language="C#" Debug="true" %>

    or:

    2) Add the following section to the configuration file of your application:

    <configuration>
       <system.web>
           <compilation debug="true"/>
       </system.web>
    </configuration>

    Note that this second technique will cause all files within a given application to be compiled in debug mode. The first technique will cause only that particular file to be compiled in debug mode.

    Important: Running applications in debug mode does incur a memory/performance overhead. You should make sure that an application has debugging disabled before deploying into production scenario.

    Stack Trace: 
    [SecurityException: That assembly does not allow partially trusted callers.]
       stmva.pdf.Page_Load(Object sender, EventArgs e) +0
       System.Web.UI.Control.OnLoad(EventArgs e) +88
       System.Web.UI.Control.LoadRecursive() +100
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3910
       System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +363
       System.Web.UI.Page.ProcessRequest() +79
       System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
       System.Web.UI.Page.ProcessRequest(HttpContext context) +185
       ASP.pdf_aspx.ProcessRequest(HttpContext context) +37
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +698
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +137
    


    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

    Como faço para resolver esse problemão.

    Att Bruno Tondello

    sexta-feira, 6 de setembro de 2013 17:32

Respostas

  • Consegui da seguinte forma.

    Quando é baixado o itextsharp, vem o compilador do mesmo no arquivo.

    Abri o compilador e adicionei as seguintes informações no arquivo AssemblyInfo.cs

    using System.Security;
    using System.Security.Permissions;
    
    [assembly: AllowPartiallyTrustedCallers]

    Fiz um build no visual studio e peguei a dll gerada substitui a minha e bazinga. FUNCIONOU

    • Marcado como Resposta Bruno Tondello sexta-feira, 6 de setembro de 2013 18:55
    sexta-feira, 6 de setembro de 2013 18:55

Todas as Respostas

  • Isso é causado pela segurança do servidor de produção que não está rodando em modo "Full Trust". Essa dll, assim como o ReportViewer, roda em Full Trust. A maioria dessas empresas, que fornecem serviço de hospedagem, configuram seus servidores para rodarem em Medium Trust, o que acarretará este problema que você está enfrentando. Contudo, a dll do ItextSharp também roda em Medium Trust, porém tem de ser feito alguns ajustes e ser recompilada. Você deve encontrar algo a respeito rapidamente no google. Mas caso vá precisar de outras dlls como o Report Viewer, aconselho você a procurar logo uma outra empresa que trabalhe com Full Trust, que aí você não terá dor de cabeça com isso, ou então migrar pro Azurre e sua forma de trabalhar
    sexta-feira, 6 de setembro de 2013 18:35
  • Consegui da seguinte forma.

    Quando é baixado o itextsharp, vem o compilador do mesmo no arquivo.

    Abri o compilador e adicionei as seguintes informações no arquivo AssemblyInfo.cs

    using System.Security;
    using System.Security.Permissions;
    
    [assembly: AllowPartiallyTrustedCallers]

    Fiz um build no visual studio e peguei a dll gerada substitui a minha e bazinga. FUNCIONOU

    • Marcado como Resposta Bruno Tondello sexta-feira, 6 de setembro de 2013 18:55
    sexta-feira, 6 de setembro de 2013 18:55
  • Ótimo amigo,

    Mas acho que vale a pena você fazer logo uma análise sobre os recursos da aplicação, pois existem dlls como o reportviewer que nem com muita reza você consegue colocar como MediumTrust. O chart da microsoft também só funciona em ambiente Full Trust... 

    sexta-feira, 6 de setembro de 2013 20:10
  • Pois então segui por esse site http://ranj33t.wordpress.com/2011/10/18/run-itextsharp-dll-under-medium-trusted-callers-or-partially-trusted-callers/ fiz os procedimentos e funcionou no meu servidor..

    segunda-feira, 9 de setembro de 2013 18:37