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

c#读取csv文件System.Security.SecurityException,c#,csv,securityexception,C#,Csv,Securityexception,我需要在我的Web服务中读取csv文件 以下是我目前的代码: [WebMethod] public List<string> getIdentifiants() { List<string> listA = new List<string>(); List<string> listB = new List<string>(); using (var fs = File.Op

我需要在我的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;

    }
[WebMethod]
公共列表getIdentifications()
{
List listA=新列表();
List listB=新列表();
使用(var fs=File.OpenRead(@“C:\Users\stag01\Desktop\identifications.csv”))
使用(变量读取器=新的StreamReader(fs))
{
而(!reader.EndOfStream)
{
var line=reader.ReadLine();
变量值=行分割(“;”);
listA.Add(值[0]);
列表B.添加(值[1]);
}
}
返回列表a;
}
但是当我尝试运行它时,我得到了以下错误:

System.Security.SecurityException:Échec de la demande d'autorisation de type'System.Security.Permissions.FileIOPermission,mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089'
§System.Security.CodeAccessSecurityEngine.Check(对象请求、堆栈爬网标记和堆栈标记、布尔值isPermSet)
§System.Security.CodeAccessPermission.Demand()
§System.IO.FileStream.Init(字符串路径、文件模式、文件访问权限、Int32权限、布尔用户权限、文件共享、Int32缓冲大小、文件选项选项、安全属性secAttrs、字符串msgPath、布尔bFromProxy)
§System.IO.FileStream..ctor(字符串路径、文件模式、文件访问访问、文件共享)
§System.IO.File.OpenRead(字符串路径)
áWebApplication1.WS_stage_2017.getIdentifications()dans\Nas服务器\User Folder\stag01\Mes文档\Visual Studio 2017\Projects\WebApplication1\WebApplication1\WS_stage_2017.asmx.cs:ligne 31


有人能帮我吗

您需要读取权限。如果在本地调试,则以管理员visual Studio身份运行。若正在运行服务器,则需要在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;

    }
[WebMethod]
公共列表getIdentifications(){
List listA=新列表();
List listB=新列表();
锁(这个){
使用(var fs=File.OpenRead(@“C:\Users\stag01\Desktop\identifications.csv”))
使用(变量读取器=新的StreamReader(fs)){
而(!reader.EndOfStream){
var line=reader.ReadLine();
变量值=行分割(“;”);
listA.Add(值[0]);
列表B.添加(值[1]);
}
} 
} 
返回列表a;
}

您需要读取权限。如果在本地调试,则以管理员visual Studio身份运行。若正在运行服务器,则需要在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;

    }
[WebMethod]
公共列表getIdentifications(){
List listA=新列表();
List listB=新列表();
锁(这个){
使用(var fs=File.OpenRead(@“C:\Users\stag01\Desktop\identifications.csv”))
使用(变量读取器=新的StreamReader(fs)){
而(!reader.EndOfStream){
var line=reader.ReadLine();
变量值=行分割(“;”);
listA.Add(值[0]);
列表B.添加(值[1]);
}
} 
} 
返回列表a;
}

您的应用程序以有限权限运行测试时您应该拥有完整的管理员帐户您的应用程序以有限权限运行测试时您应该拥有完整的管理员帐户