【问题标题】:C# Problem Running WPF运行 WPF 的 C# 问题
【发布时间】:2011-02-15 01:35:03
【问题描述】:

我的 WPF 应用程序使用 Visual Studio 2010,在 C# 中构建时遇到一些问题。目前出现的错误是:

SecurityException 未被用户代码处理

以下是我单击按钮时的代码,它检查文本文件的大小,如果它有音量或没有颜色,则为名为“ButtonToday”的按钮的背景着色。

private void Button_Click(object sender, RoutedEventArgs e)
{
    //Gets current date and puts it into string.
    string today = DateTime.Now.ToString("yyyy.MM.dd");
    string yesterday = DateTime.Now.AddDays(-1).ToString("yyyy.MM.dd");

    TextBoxToday.Text = "" + today;
    TextBoxYesterday.Text = "" + yesterday;
    FileInfo f = new FileInfo("D:\\Client1\\2011.02.14.log");
    {
        if (f.Length > 0)
            ButtonToday.Background = Brushes.Green;
        else
            ButtonToday.Background = Brushes.Red;
    }
}

感谢您的帮助。我是n00b。

【问题讨论】:

  • 运行应用程序的用户帐户是否有权访问 ("D:\\Client1\\2011.02.14.log") ?
  • 如果您发布堆栈跟踪和异常源,将会很有帮助。使用 @DashRantic 显示的 try..catch 块。
  • 我从下面的建议中得到的错误是:失败的应用程序是:需求。第一个失败的权限类型是:System.Security.Permissions.FileIOPermission。失败的程序集区域是:MyComputer

标签: c# visual-studio-2010 code-access-security securityexception


【解决方案1】:

您(或您的应用程序)似乎没有适当的权限打开文件。检查并确保您可以通过文件系统自己访问该文件,听起来您可能不能。

[edit]那么你有读取文件的权限吗?奇怪的。一定要试试下面的,直到你从抛出的异常中得到更多细节之前,你不会确切知道发生了什么。[/edit]

试试这个:

private void Button_Click(object sender, RoutedEventArgs e)
{
    //Gets current date and puts it into string.
    string today = DateTime.Now.ToString("yyyy.MM.dd");
    string yesterday = DateTime.Now.AddDays(-1).ToString("yyyy.MM.dd");
    TextBoxToday.Text = "" + today;
    TextBoxYesterday.Text = "" + yesterday;

     try
     {
         FileInfo f = new FileInfo("D:\\Client1\\2011.02.14.log");
         {
             if (f.Length > 0)
                 ButtonToday.Background = Brushes.Green;
             else
                 ButtonToday.Background = Brushes.Red;
         }
     }
     catch ( SecurityException ex )
     {
         ex.Message;
     }
}

ex.Message; 行上放置一个断点,然后在调试模式下运行您的程序。当您到达变量ex 并阅读错误消息时,将鼠标悬停在变量上,应该会为您提供有关正在发生的事情的更多信息。希望这会有所帮助!

【讨论】:

  • 请问“SecurityException”需要什么命名空间?
  • 我相信命名空间是 System.Security; ,或尝试 System.Security.SecurityException;
  • 返回的错误最后粗略说一下: > 第一个失败的权限的类型是System.Security.Permissions.FileIOPermission 失败的程序集的区域是MyComputer 这有什么意义吗?
  • 您的应用程序无法读取您指向的文件。我假设您要检查的文件和您正在运行的应用程序都在同一台本地计算机上?如果是这样,请仔细检查您的用户帐户对程序尝试访问的文件的权限。您可能能够打开该文件,因为您以管理员身份运行,但如果 Visual Studio 未在管理员模式下运行,它将无法访问该文件。因此,请尝试在管理员模式下运行 Visual Studio,或授予您的用户帐户对您尝试访问的文件的完全读取权限。
【解决方案2】:

注意:如果您可以通过 Windows 资源管理器看到该文件,则可能是管理权限问题。

尝试以管理员身份运行 Visual Studio(右键单击它的图标,然后选择“以管理员身份运行”),看看是否有帮助。

或者,您可以在 Windows 资源管理器中选择文件夹并授予“用户”组读取它的权限。 Here's a place to start

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多