C# 用户权限问题

C# 用户权限问题,c#,xml,url,permissions,directory,C#,Xml,Url,Permissions,Directory,我正在使用Visual Studio C#从我正在使用的本地搜索工具中解析XML文档以查找文件位置。具体地说,我使用c#查询用户是否有权访问某些文件,并隐藏其无权访问的文件。我似乎有一些文件应该返回access是真的,但是,因为不是所有的文件都是本地的(即一些是没有专有名称的web文件),它没有显示对它应该显示访问权限的文件的访问权限。现在的错误是由使用.aspx?i=573的url引起的,是否有解决方法,或者我必须删除所有这些文件=/ 编辑:更多信息 我现在正在用 foreach (XmlNo

我正在使用Visual Studio C#从我正在使用的本地搜索工具中解析XML文档以查找文件位置。具体地说,我使用c#查询用户是否有权访问某些文件,并隐藏其无权访问的文件。我似乎有一些文件应该返回access是真的,但是,因为不是所有的文件都是本地的(即一些是没有专有名称的web文件),它没有显示对它应该显示访问权限的文件的访问权限。现在的错误是由使用
.aspx?i=573
的url引起的,是否有解决方法,或者我必须删除所有这些文件=/

编辑:更多信息

我现在正在用

foreach (XmlNode xn in nodeList)
            {

                string url = xn.InnerText;
                //Label1.Text = url;
                try
                { using (FileStream fs = File.OpenRead(url)) {  }
                }
                catch { i++; Label2.Text = i.ToString(); Label1.Text = url; }


            }
问题是,当它试图打开像…
.aspx?i=573这样的文件时,会将它们放入catch堆栈中。如果我试图打开文件,但是文件打开得很好。(即我有读取权限,但由于文件类型或文件名中“?=”的附加,它会将其扔进无法读取的堆栈


我希望所有可通过url或本地访问读取的内容都能显示出来,否则它会为我捕获错误文件。

我不确定您到底想做什么,但如果您只需要URI的路径,您可以像这样轻松地删除查询字符串部分:

        Uri baseUri = new Uri("http://www.domain.com/");
        Uri myUri = new Uri(baseUri, "home/default.aspx?i=573");

        Console.WriteLine(myUri.AbsolutePath); // ie "home/default.aspx"
在Windows中,文件名中不能有?,但它们在URI中有效(这就是为什么IE可以打开它,但Windows不能)

或者,如果要将URL转换为文件名,则可以将“?”替换为其他字符

事实上,现在考虑一下,您可以检查“文档”是否是URI,如果不是,则尝试在文件系统上打开该文件。听起来您正在尝试打开所提供的任何内容,但对数据执行一些检查不会有任何伤害

private static bool IsLocalPath(string p)
{
  return new Uri(p).IsFile;
}

这是因为它看起来正是您所要查找的内容。

我不确定您到底想做什么,但如果您只需要URI的路径,您可以像这样轻松地删除查询字符串部分:

        Uri baseUri = new Uri("http://www.domain.com/");
        Uri myUri = new Uri(baseUri, "home/default.aspx?i=573");

        Console.WriteLine(myUri.AbsolutePath); // ie "home/default.aspx"
在Windows中,文件名中不能有?,但它们在URI中有效(这就是为什么IE可以打开它,但Windows不能)

或者,如果要将URL转换为文件名,则可以将“?”替换为其他字符

事实上,现在考虑一下,您可以检查“文档”是否是URI,如果不是,则尝试在文件系统上打开该文件。听起来您正在尝试打开所提供的任何内容,但对数据执行一些检查不会有任何伤害

private static bool IsLocalPath(string p)
{
  return new Uri(p).IsFile;
}

这是从它开始的,看起来正是您要查找的内容。

FileStream读取和写入本地文件。“?”不是本地文件名的有效字符

看起来您想打开本地和远程文件。如果您正试图这样做,则应针对每种类型使用适当的下载方法,例如,对于HTTP,您可以使用WebRequest或相关类


注意:如果您说:当url为“…”
File.OpenRead(url)
异常失败时,mesasge“…”FileStream读取和写入本地文件,则回答起来会容易得多。“?”不是本地文件名的有效字符

看起来您想打开本地和远程文件。如果您正试图这样做,则应针对每种类型使用适当的下载方法,例如,对于HTTP,您可以使用WebRequest或相关类


注意:如果您说:当url为“…”
File.OpenRead(url)
异常失败时,mesasge“…”将更容易回答.

如果您指定所遇到的错误类型,这对读者也会很有帮助,一些代码片段也会很有价值。这不是一个简单的错误,因为它几乎可以正常工作。问题是它正在过滤掉我可以访问的对象。不过,我会添加更多信息,谢谢。同时避免使用try catch块来控制程序的流程如果你指定你会遇到什么样的错误,对读者也会很有帮助,一些代码片段也会很有价值。这并不是说每一句话都有错误,因为它几乎和预期的一样工作。问题是它过滤掉了我可以访问的对象。我会在下面添加更多信息当然,谢谢。还要避免使用try-catch块来控制程序流