ASP.NET WebPermission 安全异常

3

通常我不喜欢发这种问题,因为我觉得真正学习的最好方式是自己找答案。

然而,我需要快速回答这个问题,因为我的客户由于这个问题无法经营她的业务。

昨天,我的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[] parameters) +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个回答

5

我不确定这是否有帮助,但我曾经有一个客户遇到了同样的问题。他们的网络托管公司进行了一些更改,导致他们的网站出现类似的错误。通过在web.config文件的System.Web部分内添加以下内容,成功地使事情再次正常运作:

<trust level="Full" />

如果这不能解决您的问题,而网站托管商又无法在新年之前解决问题,我强烈建议您考虑更换托管服务提供商。

2
我将在此发布此文以帮助其他人。警告:在您的提供商将现有的ASP.NET站点迁移到另一台服务器之前,请确保您询问他们有关WEBPERMISSIONS和TRUST LEVELS的信息。
以下是我的提供商的回复...
“感谢您的来信。
由于在中等信任环境下无法使用WebPermission,因此它失败了。
我们目前无法对这些服务器进行任何更改,因为我们计划在今年年底之前将所有站点迁移到一对新群集上。
我相信新的Windows群集将提供WebPermission,因为它已在当前Namesco Windows群集上启用。”
因此,他们期望我的客户网站将在新年之前离线并失去业务。

你能否暂时回到旧服务器上?或者至少暂时迁移到其他地方?这样做可能比等待造成的业务损失更少。 - AndyG

2

提醒大家,如果遇到类似问题,我也曾经遇到过这个错误消息,但我没有更改本地设置。几分钟后我才意识到,我不小心从Windows Server 2008的网络共享中打开了项目。当然,权限不正确!这是一个真正愚蠢的举动,但如果有所帮助,我很愿意被羞辱 :)


1

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


确实是这样。这是我创建并托管在同一服务器上的Web服务。我会联系他们并非常感谢您的帮助。 - Skittles
以下链接可能有助于加快速度,如果您正在与一个不太清楚您所说的设置的技术人员交谈:http://www.wrox.com/WileyCDA/Section/Using-the-WebPermission-Setting-in-ASP-NET-Partial-Trust.id-291738.html - Maxam
谢谢Maxam,这是一个很好的起点。我会告诉你我的进展情况。 - Skittles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接