2017-05-19 11 views
1

、ここCの私は私のWebサービスでcsvファイルを読む必要が#読書のcsvファイルSystem.Security.SecurityException

は私のコードは、これまでのところです:

[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:É CHEC・デ・ラ・demandeドールautorisationドタイプ「System.Security.Permissions.FileIOPermission、mscorlib、バージョン= 2.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089このエラーを得ました' System.Security.CodeAccessSecurityEngine.Checkà
(オブジェクト要求、StackCrawlMark & stackMark、ブールisPermSet)
System.Security.CodeAccessPermission.Demandà()
System.IO.FileStream.Init(文字列パス、にFileModeモードA、ファイルアクセスアクセス、Int32権限、ブールuseRights、FileShare共有、Int32 bufferSize、FileOptionsオプション、SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean bFromProxy)
àSystem.IO.FileStream..ctor(文字列パス、FileModeモード、FileAccessアクセス、FileShare共有)
àSystem.IO.File.OpenRead(文字列パス)
àWebApplication1.WS_stage_2017.getIdentifiants()dans \ Nas-server \ Use Rプロジェクト\ Visual Studioの2017 \ WebApplication1と\ WebApplication1と\ WS_stage_2017.asmx.cs \フォルダ\ stag01 \ Mesの文書:31

LIGNE誰も私を助けてくださいことができますか?

+2

あなたappicationは、それが動作 –

答えて

0

読み取り権限が必要です。ローカルのデバッグの場合は、管理者用のVisual Studioとして実行します。サーバーを実行している場合は、サービスアプリケーションプールを読み取りアクセス許可に設定する必要があります。

また、このコードは間違っています。 1人のユーザーしか実行できません。 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; 

    } 
+0

をテストするときは、完全な管理者アカウントを持っている必要があり限られた特権で実行されているが、ありがとうございました! – Kurapika

関連する問題