【问题标题】:Access to the path is denied in service fabric app在服务结构应用程序中拒绝访问路径
【发布时间】:2017-04-04 22:16:00
【问题描述】:

我正在开发一个服务结构无状态服务应用程序,有时我需要下载一个文件并将其保存到我的桌面文件夹,但即使我以管理员身份运行,我也会收到错误:

拒绝访问路径“C:/Users/me/Desktop/filename”

  using (var response = await _httpClient.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseHeadersRead))
  {
       using (var streamToReadFrom = await response.Content.ReadAsStreamAsync())
       {
          var fileName = $"C:\\Users\\me\\Desktop\\{name}{DateTime.Now.ToString("yyyyMMdd")}";
               using (var streamToWriteTo = File.Create(fileName))
               {
                    await streamToReadFrom.CopyToAsync(streamToWriteTo);
               }
       }
  }

我正在测试运行本地调试集群,但是当我部署它时,我想保存到网络路径。

【问题讨论】:

    标签: c# .net azure-service-fabric


    【解决方案1】:

    如果您运行任务管理器并转到“详细信息”选项卡,您将看到 Service Fabric 的进程(Fabric.exe、FabricGateway.exe 和其他)正在以 NETWORK SERVICE 用户的身份运行,而不是您自己的用户帐户。 NETWORK SERVICE 用户无权访问您的用户个人资料。

    如果不进一步了解您尝试保存文件的原因,很难建议您可以做什么。但是,如果这是您在服务投入生产后要继续做的事情,那么我现在就实施您的最终解决方案。我想这可能是保存到 Blob 存储,或者是某种数据库。

    【讨论】:

    • 问题是我无法将这些文件保存在外部环境中,它必须是共享文件夹。
    • 我只有在云中运行 Service Fabric 的经验,而不是在本地运行。但是,这个 SO question 似乎提供了几种方法来作为不同的用户运行服务结构可执行文件。这样,您可以以有权访问共享文件夹的域用户身份运行您的服务:stackoverflow.com/questions/39126630/…
    • 这里是关于 RunAs 功能的官方文档:docs.microsoft.com/en-us/azure/service-fabric/…
    猜你喜欢
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    相关资源
    最近更新 更多