gpt4 book ai didi

asp.net - ASP.NET 应用程序中缓存文件夹的 System.IO 访问错误

转载 作者:行者123 更新时间:2023-12-03 13:35:21 25 4
gpt4 key购买 nike

我正在开发一个访问 Team Foundation Server 2010 并创建新工作项的 ASP.NET 应用程序。该应用程序运行在 DefaultAppPool 中,使用 NetworkService 作为标识。我收到以下错误:

[UnauthorizedAccessException: Access to the path 'Cache\v10' is denied.]

System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +12892935
System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj) +1594
System.IO.Directory.CreateDirectory(String path) +311
Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore.GetDefaultCacheDirectory() +1807816
Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore.InitializeInternal() +225

要注意的是,我正在使用服务帐户连接到 TFS,因为此表单的用户无权在 TFS 中添加工作项。我已授予网络服务和特定于表单的服务帐户对应用程序根目录的完全控制权。我不确定如何解决这个问题。

我们的服务器正在运行带有 IIS 7 的 Windows Server 2008。当从我的本地开发机器以 Debug模式运行时,该应用程序可以正常工作。

有什么建议吗?

编辑:从我所看到的来看,下面格兰特的帖子是正确的,但我已经在我原来的帖子之前完成了这些步骤。 (这就是为什么路径是 Cache\v10 而不是长 C:\Program Files ... 默认路径的原因。)我已将 IIS 应用程序根文件夹的完全所有权授予 NetworkService 帐户,但我们仍然收到 UnauthorizedAccessException。

我们能够通过将缓存文件夹变成网络共享并授予 NetworkService 对该共享的完全访问权限来解决该问题。我宁愿不必这样做,但它现在似乎工作正常。如果有人知道我可以尝试“正确”地做到这一点,我将不胜感激。

最佳答案

当使用 Work Item Tracking 对象模型时,它需要磁盘上的一个文件夹来存储元数据缓存。

对于普通用户,这是在 C:\Users\username\AppData\Local\Microsoft\Team Foundation\3.0\Cache 下对于网络服务,这是在 C:\ProgramData\Microsoft\Team Foundation\3.0\Cache 下

但是,在您的情况下,网络服务似乎没有创建或写入该文件夹的权限。

你有两个选择:

  1. 创建文件夹并授予本地 IIS_WPG 组访问该文件夹的权限
  2. 在别处创建文件夹并授予本地 IIS_WPG 组访问该文件夹的权限,并在您的 web.config 中设置一个 key

<appSettings><add key="WorkItemTrackingCacheRoot" value="pathtofolder"/>

更具体地说,您可以从此代码获取文件夹的位置:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), @"Microsoft\Team Foundation\3.0\Cache");

关于asp.net - ASP.NET 应用程序中缓存文件夹的 System.IO 访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5031476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com