0

我的 Web 应用程序出现了一个非常奇怪的错误:

    Server Error in '/' 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: Request failed.

    Source Error: 


    [No relevant source lines]


    Source File: c:\windows\Microsoft.NET\Framework\v4.0.21006\Temporary ASP.NET Files\root\9d105d0f\5a29f9f\App_Web_w324g3dv.1.cs    Line: 0 

    Stack Trace:   

[SecurityException: Request failed.] 

  AjaxControlToolkit.HTMLEditor.EditPanel.set_ActiveMode(ActiveModeType value) in C:\Users\Machta\Documents\Visual Studio 10\Projects\AjaxControlToolkit_9c860ac12ae9\Server\AjaxControlToolkit\HTMLEditor\EditPanel.cs:400
   AjaxControlToolkit.HTMLEditor.EditPanel.LoadPostData(String postDataKey, NameValueCollection postCollection) in C:\Users\Machta\Documents\Visual Studio 10\Projects\AjaxControlToolkit_9c860ac12ae9\Server\AjaxControlToolkit\HTMLEditor\EditPanel.cs:142
   AjaxControlToolkit.ScriptControlBase.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) in C:\Users\Machta\Documents\Visual Studio 10\Projects\AjaxControlToolkit_9c860ac12ae9\Server\AjaxControlToolkit\ExtenderBase\ScriptControlBase.cs:426
   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +8766531

...

仅当我在服务器上发布它时才会发生(这很好,只要它是一个安全异常)。

奇怪的是,该应用程序需要访问本应位于我计算机文件夹中的文件的权限。但是这个文件夹在我的电脑上不存在。当我重新安装 Visual Studio 时,我还将项目移动到了另一个文件夹(名称相似,但它仍然是一个不同的文件夹)。

所以我的问题是:

  1. 为什么应用程序在服务器上时需要我计算机上的文件?
  2. 当文件也不应该在这里时,为什么它可以在我的计算机上工作?
  3. 可能的原因和解决方案是什么?

你可以在这里试试:http: //machta.aspone.cz/editor/webConntentEditor.aspx。用户名:machta 密码:123456

我还应该补充一点,每次回发后都会出现此错误,但页面加载正常。

4

2 回答 2

2

默认情况下,您的服务器的信任级别可能会降低。
尝试将以下行添加到您的 web.config

<system.web>
    <trust level="Full"  />
</system.web>

资源

于 2010-12-16T21:07:40.400 回答
0

首先,它不是在您的计算机上请求文件。它只是告诉您已编译的文件(和位置)的名称以及失败的相关代码行。

PDB 会在编译应用程序时存储此信息,这就是为什么要引用硬盘驱动器上的某个位置的原因。

如果该引用位置不再有效,那么听起来您自从移动本地源以来还没有将整个应用程序部署到服务器。

综上所述,第 400 行或您的 EditPanel 做什么?如果它试图将文件写入 Web 服务器上的某个位置,那么您需要确保正在执行该应用程序的用户具有执行此操作的写入操作。提示:查看应用程序池设置。

于 2010-12-16T21:14:04.167 回答