System.Security.SecurityException:该程序集不允许部分信任的调用者

时间:2009-04-22 12:44:37

标签: c#

我正在使用itextsharp.dll创建pdf,本地它工作正常。但服务器面临以下错误.i已添加assemblyinfo.cs ..但同样的错误即将到来。具体来说,我通过添加这些引用和属性修改了AssemblyInfo.cs文件:

使用System.Security; 使用System.Security.Permissions; [assembly:AllowPartiallyTrustedCallers]

在我的表单中pdf在myDocument上抛出一个错误..它永远不会去读取它会抛出以下错误......

  Document myDocument = new Document(PageSize.A4, 70, 70, 70, 70);

仍然在服务器中收到错误..任何人都可以帮我解决

'/'应用程序中的服务器错误。 安全例外 说明:应用程序尝试执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系或在配置文件中更改应用程序的信任级别。

异常详细信息:System.Security.SecurityException:该程序集不允许部分信任的调用方。

来源错误:

第216行:HttpContext.Current.Response.End(); 第217行:
第218行:} 第219行:protected void droplist_SelectedIndexChanged(object sender,EventArgs e) 第220行:{

源文件:d:\ hosting \ bookgroupadmin \ agent \ checkbeforprintconf.aspx.cs行:218

堆栈追踪:

[SecurityException:该程序集不允许部分信任的调用者。]    d:\ hosting \ bookgroupadmin \ agent \ checkbeforprintconf.aspx.cs中的finalgroup_checkbeforprintconf.btn_Click(Object sender,EventArgs e):218    System.Web.UI.WebControls.Button.OnClick(EventArgs e)+105    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+107    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+7    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+11    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+33    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+7350    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+213    System.Web.UI.Page.ProcessRequest()+86    System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)+18    System.Web.UI.Page.ProcessRequest(HttpContext context)+49    App_Web_ovcuievo.18.cs中的ASP.checkbeforprintconf_aspx.ProcessRequest(HttpContext上下文):0    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+358    System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+64

版本信息:Microsoft .NET Framework版本:2.0.50727.1433; ASP.NET版本:2.0.50727.1433

4 个答案:

答案 0 :(得分:3)

关于它的最好的事情是它可以在中等信任模式下运行 - 一旦做出微小的改变以允许部分信任的呼叫者。要进行此更改,请下载iTextSharp源代码分发(http://sourceforge.net/projects/itextsharp/files/) 修改AssemblyInfo.cs文件以添加部分受信任的调用者属性。

[assembly: AllowPartiallyTrustedCallers()]

重建iTextSharp程序集,最好进入中等信任环境。

答案 1 :(得分:2)

您使用的库很可能不支持中等信任环境(大多数共享托管公司)。它可能不是你的代码抛出错误,而是第三方 - 确保他们支持这个。

如果堆栈跟踪以您编写的代码的一部分结束,那么请提供此代码,目前尚不清楚究竟什么没有权限运行。

答案 2 :(得分:1)

我遇到了同样的问题,它通过创建另一个文件夹,将所有内容移动到该文件夹​​并将应用程序路径更改为新文件夹来解决。 我不能说它是如何解决的。但它对我有用。我相信它是由于IIS中的一些缓存问题。

希望这会帮助你们。

答案 3 :(得分:0)

我也遇到了这种类型的问题并按照以下链接的说明解决了。它是如此有用,它节省了我3天的辛勤工作。你可以试试这个

https://www.aspsnippets.com/Articles/ASPNet-iTextSharp-SystemSecuritySecurityException-That-assembly-does-not-allow-partially-trusted-callers.aspx

我做的最后两步没有提及 1.从项目中删除iTextsharp的旧参考。 2.在项目中添加新的iTextsharp dll参考。这是你做的。然后发布您的项目。不要使用旧的发布代码直接将新的itextsharp.dll粘贴到服务器中。