2017-11-29 5 views
1

私はOSXで.net core 2.0アプリケーションを構築しています。これは、APIエンドポイントにヒットしたときにダミーデータを持つ.xlsxを作成するWebAPIアプリケーションです。私はそれ(DOTNETの実行)を実行しようとするとこれはの主要部分である私は、私はsudoのようにそれを実行しているし、それが書き込みされているフォルダを変更しようとしている.Net Core appは任意のフォルダにファイルを書き込むことができませんOSX

System.UnauthorizedAccessException: Access to the path '/Users/myuser/projects/myproject' is denied. ---> System.IO.IOException: Permission denied 

を取得し、どちらが

// GET api/values/5 
    [HttpGet("{id}")] 
    public string Get(int id) 
    { 
     CreatePackage("./"); 
     return "value"; 
    } 

    public void CreatePackage(string filePath) 
    { 
     using (SpreadsheetDocument package = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook)) 
     { 
      CreateParts(package); 
     } 
    } 

    private void CreateParts(SpreadsheetDocument document) 
    { 
     WorkbookPart workbookPart = document.AddWorkbookPart(); 
     GenerateWorkbookPartContent(workbookPart); 

     WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>("rId1"); 
     GenerateWorksheetPartContent(worksheetPart); 
    } 

    private void GenerateWorkbookPartContent(WorkbookPart workbookPart) 
    { 
     Workbook workbook = new Workbook(); 
     workbook.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 

     Sheets sheets = new Sheets(); 
     Sheet sheet = new Sheet() { Name = "Sheet", SheetId = (UInt32Value)1U, Id = "rId1" }; 
     sheets.Append(sheet); 

     workbook.Append(sheets); 
     workbookPart.Workbook = workbook; 
    } 

    private void GenerateWorksheetPartContent(WorksheetPart worksheetPart) 
    { 
     Worksheet worksheet = new Worksheet(); 
     SheetData sheetData = new SheetData(); 

     Row row = new Row(); 
     Cell cell = new Cell() { CellReference = "A1", DataType = CellValues.InlineString }; 
     InlineString inlineString = new InlineString(); 
     Text text = new Text(); 
     text.Text = "hello"; 
     inlineString.Append(text); 
     cell.Append(inlineString); 
     row.Append(cell); 

     sheetData.Append(row); 
     worksheet.Append(sheetData); 
     worksheetPart.Worksheet = worksheet; 
    } 

を助けませんクラス、私はプロジェクトフォルダに(今のところ)ファイルを作成しています。 CLIのために私のすべてのファイルに読み取り書き込み許可を与えることについての記事を見ましたが、それは理想的ではないようです。また、ファイルの属性の設定についてはthisを見ましたが、これはOpenXmlスプレッドシートの作成方法です。ファイルアクセス権の設定については何も教えていません。

Anyヘルプははるかに

+0

を解決し「あなたが直接 'DOTNETのrun'を使用するか、ウェブサーバーが存在しています後ろにホスティングしていますか? –

+0

@ChrisPrattコマンドラインで直接実行するdotnetを使用しています – YourGoodFriend

答えて

0

をいただければ幸い私は、私が送信されたファイルパスがフォルダパスでないファイルパスだった、それを考え出した問題が

[HttpGet("{id}")] 
public string Get(int id) 
{ 
    CreatePackage("./testfile.xlsx"); 
    return "value"; 
} 
関連する問題