【问题标题】:.Net Core app can't write file to any folder OSX.Net Core 应用程序无法将文件写入任何文件夹 OSX
【发布时间】:2018-05-13 06:37:50
【问题描述】:

我正在 OSX 中构建一个 .net core 2.0 应用程序,它是一个 WebAPI 应用程序,当 API 端点被命中时,它会创建一个带有虚拟数据的 .xlsx。当我尝试运行它(dotnet run)时,我得到了

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

我尝试将它作为 sudo 运行并更改它正在写入的文件夹,但都没有帮助

// 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 电子表格创建方法,据我所知,它没有任何关于设置文件权限的内容(无论如何它都需要在文件夹中)

任何帮助将不胜感激

【问题讨论】:

  • 你是直接使用dotnet run,还是有你在后面托管的网络服务器?
  • @ChrisPratt 我使用 dotnet 直接在命令行运行

标签: c# .net macos asp.net-core


【解决方案1】:

我想通了,我发送的文件路径是文件夹路径而不是文件路径,问题已解决

[HttpGet("{id}")]
public string Get(int id)
{
    CreatePackage("./testfile.xlsx");
    return "value";
}

【讨论】:

    猜你喜欢
    • 2013-08-06
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2016-01-04
    • 2022-07-01
    • 1970-01-01
    相关资源
    最近更新 更多