提问者:小点点

C#读取csv文件System.Security.SecurityException


我需要读取Web服务中的csv文件,

下面是我到目前为止的代码:

[WebMethod]
    public List<string> getIdentifiants()
    {
        List<string> listA = new List<string>();
        List<string> listB = new List<string>();
        using (var fs = File.OpenRead(@"C:\Users\stag01\Desktop\identifiants.csv"))
        using (var reader = new StreamReader(fs))
        {

            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                var values = line.Split(';');

                listA.Add(values[0]);
                listB.Add(values[1]);
            }
        }

        return listA;

    }

但是当我尝试运行它时,我得到了这个错误:

system.security.securityException:echec de la demande d'autorisation de type'system.security.permissions.FileOpermission,mscorlib,version=2.0.0.0,culture=neutral,publicKeyToken=b77a5c561934e089'。
àsystem.security.CodeAccessSecurityEngine.check(对象请求,StackCrawlMark&;stackMark,Boolean

有谁能帮帮我吗?


共1个答案

匿名用户

您需要读取权限。如果在本地调试,则以管理员visual stuio身份运行。如果正在运行服务器,您需要在ISS上设置读取权限,您的服务应用程序池。

而且这个代码是错误的。只能执行一个用户。2客户端无法同时打开此文件。您需要使用锁来解决这个问题。

        [WebMethod]
    public List<string> getIdentifiants() {
        List<string> listA = new List<string>();
        List<string> listB = new List<string>();
        lock (this) {
            using (var fs = File.OpenRead(@"C:\Users\stag01\Desktop\identifiants.csv"))
            using (var reader = new StreamReader(fs)) {

                while (!reader.EndOfStream) {
                    var line = reader.ReadLine();
                    var values = line.Split(';');

                    listA.Add(values[0]);
                    listB.Add(values[1]);
                }
            } 
        } 
        return listA;

    }