【问题标题】:ASP.NET WebPermission Security ExceptionASP.NET WebPermission 安全异常
【发布时间】:2010-09-19 17:42:41
【问题描述】:

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

但是,我需要尽快回答这个问题,因为我有一个客户因为这个问题而无法经营她的业务。

昨天,我的 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(对象需求, 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(字符串 sModuleName,字符串 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(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+7350 System.Web.UI.Page.ProcessRequest(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+213 System.Web.UI.Page.ProcessRequest() +86 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext 上下文)+18 System.Web.UI.Page.ProcessRequest(HttpContext 上下文)+49 ASP.maindefault_aspx.ProcessRequest(HttpContext 上下文) +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 设置。

我知道人们讨厌阅读和回答这些类型的问题,但是对于我或我的托管网站需要做些什么来解决这个问题的任何帮助将不胜感激

【问题讨论】:

    标签: asp.net system.security


    【解决方案1】:

    不确定这是否会有所帮助,但我曾经有一位客户遇到过同样类型的问题。他们的虚拟主机公司进行了一些更改,导致他们的网站出现类似的错误。通过在 web.config 的 System.Web 部分中添加以下内容,设法使事情再次正常运行:

    <trust level="Full" />
    

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

    【讨论】:

      【解决方案2】:

      对于任何可能遇到相同问题的人来说,仅供参考 - 我收到了这个确切的错误消息,但由于我没有更改本地机器上的任何设置,所以我无法弄清楚出了什么问题。

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

      【讨论】:

        【解决方案3】:

        我发布这个以防它帮助其他人。在他们将您的提供商托管的现有 ASP.NET 站点移动到另一台服务器之前,请注意。

        请务必询问他们有关网络许可和信任级别的信息。

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

        “感谢您的电子邮件。

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

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

        因此,他们希望我客户的网站在新年之前一直处于离线状态并失去业务。

        【讨论】:

        • 在那之前你能搬回旧服务器吗?或者至少暂时在其他地方?成本可能低于因等待而造成的业务损失。
        【解决方案4】:

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

        【讨论】:

        • 确实如此。这是我创建并托管在同一台服务器上的 Web 服务。我会就此与他们联系,非常感谢您的帮助。
        • FF.如果您正在与不太清楚您在谈论哪些设置的技术人员交谈,链接可能有助于加快速度:wrox.com/WileyCDA/Section/…
        • 感谢 Maxam,这是一个很好的起点。我会告诉你我的进展情况。
        猜你喜欢
        • 2011-01-05
        • 2010-12-02
        • 2016-07-05
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        相关资源
        最近更新 更多