ASP.NET WebPermission安全例外

时间:2008-10-29 04:53:50

标签: asp.net system.security

我通常不喜欢发布这些类型的问题,因为通常我发现真正学习的最好方法是自己找出答案。

但是,我需要很快回答这个问题,因为我的客户由于这个问题而无法开展业务。

昨天我的ASP.NET主机提供商将我的应用程序从运行.NET 1.1的服务器移动到运行.NET 1.1和2.0的服务器。我的问题是,当我测试移动时,主站点页面(Default.aspx)将不会加载

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

异常详细信息:System.Security.SecurityException:请求类型为'System.Net.WebPermission,System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。“

[SecurityException:请求类型'System.Net.WebPermission,System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。    System.Security.CodeAccessSecurityEngine.Check(Object demand,StackCrawlMark& stackMark,Boolean isPermSet)+0    System.Security.CodeAccessPermission.Demand()+59    System.Net.HttpWebRequest..ctor(Uri uri,ServicePoint servicePoint)+147    System.Net.HttpRequestCreator.Create(Uri Uri)+26    System.Net.WebRequest.Create(Uri requestUri,Boolean useUriBase)+298    System.Net.WebRequest.Create(Uri requestUri)+28    System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri)+30    System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri)+12    System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri)+4    System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object []参数)+52    PilatesPlusDublin.PilatesPlusDublinws.PilatesPlus.InsertException(String sModuleName,String sException,Int32 iUserID)+97    PilatesPlusDublin.MainDefault.Page_Load(Object sender,EventArgs e)+144    System.Web.UI.Control.OnLoad(EventArgs e)+99    System.Web.UI.Control.LoadRecursive()+ 47    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    ASP.maindefault_aspx.ProcessRequest(HttpContext context)+4    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+358    System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+64“

如果主机站点上没有WebPermission,如何配置我的站点以允许访问该页面?是否有一些标签需要放入web.config?注意 - 我们无法访问machine.config或任何其他IIS设置。

据我所知,人们讨厌阅读和回答这些类型的问题,但对我或我的托管网站需要做些什么来解决这个问题的任何帮助都会受到极大的欢迎

4 个答案:

答案 0 :(得分:5)

不确定这是否会有所帮助,但我曾经遇到过同样类型问题的客户。他们的网站托管公司做了一些改变,导致他们的网站出现类似的错误。通过在web.config中的System.Web部分中添加以下内容来管理以使事情再次起作用:

<trust level="Full" />

如果这不能解决您的问题,并且在新的一年之前网站主办无法解决问题,我会认真考虑转换托管服务提供商。

答案 1 :(得分:2)

我发布这个以防万一它可以帮助其他人。在将提供商托管的现有ASP.NET站点移动到另一个服务器之前,请先收到警告。

请确认您询问有关网站和信任级别的信息。

这是我的供应商回复......

“谢谢你的电子邮件。

它失败了,因为WebPermission在中等信任环境中不可用。

我们目前无法对这些服务器进行任何更改,因为我们计划在今年年底之前将所有网站迁移到一对新的群集。我相信新的Windows群集将具有WebPermission可用,因为它已在当前的Namesco Windows群集上启用。 “

所以他们希望我的客户的网站在新年之前离线并失去业务。

答案 2 :(得分:2)

就像对任何可能遇到同样问题的人一样,我得到了这个确切的错误信息,但由于我没有更改本地方框的任何设置,因此无法弄清楚出了什么问题。

几分钟后我意识到我不小心从Windows Server 2008上的网络共享中打开了该项目。当然权限不正确!真是愚蠢的举动,但如果它有助于某人我愿意被羞辱:)

答案 3 :(得分:1)

您的网络应用程序是在调用Web服务还是访问外部网站?如果是这样,您可能需要与您的托管服务提供商联系,并要求将URI添加到允许的连接端点列表中。