AnkhSVN打破了SVN 1.7的ASP.NET共享权限

Nec*_*lis 6 svn asp.net ankhsvn visual-studio-2010

背景(如果你想要问题,请跳到底部)

最近我将SVN存储库(在assembla上托管)升级到SVN 1.7.执行此操作后,我们开始间歇性地File Access Denied在位于存储库的本地工作副本的ASP.NET网站页面上遇到大量错误.

一些文件夹也开始获得奇怪的文件权限(它们变为标记为只读)并且用户共享已从它们中删除.这些问题只会在更新/提交周期后通过AnkhSVN的Visual Studio插件开始,但不是所有的时间; 它看起来很有气质.

到目前为止,我们发现的唯一临时修复是提交任何未完成的更改,删除本地副本并重新签出完整的工作副本(使用TortoiseSVN).但是,这不是一个可行的解决方案,它严重影响了生产力.

此站点是基于Azure的ASP.NET WebWorkerRole.它在升级到SVN 1.7之前从未出现过问题.我试图摆弄内部IIS权限来解决问题,但是,没有骰子.

我的环境

  • Visual Studio 2010 Ultimate 10.0.40219.1 SP1
  • AnkhSVN 2.3.10509(最新版本,支持SVN 1.7.1)
  • TortoiseSVN 1.7.1,Build 22161 - 64 Bit
  • 通过Azure模拟器环境在调试模式下运行

问题

SVN 1.7或我环境中的任何工具是否有可能破坏文件权限,以便文件在ASP.NET站点中变得无法使用?更重要的是,我该如何解决这个问题?


转出的确切文件权限错误是:

访问路径'// file //'被拒绝.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.UnauthorizedAccessException:拒绝访问路径'// file //'.

ASP.NET无权访问所请求的资源.考虑将资源的访问权限授予ASP.NET请求标识.ASP.NET具有基本进程标识(IIS 5上通常为{MACHINE}\ASPNET,IIS 6和IIS 7上为网络服务,IIS 7.5上已配置的应用程序池标识),如果应用程序未模拟,则使用该标识.如果应用程序模拟通过,则标识将是匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户.

要授予对文件的ASP.NET访问权限,请在资源管理器中右键单击该文件,选择"属性",然后选择"安全"选项卡.单击"添加"以添加适当的用户或组.突出显示ASP.NET帐户,并选中所需访问的框.

但是干净的工作副本不会产生此错误.比较两者的权限,似乎没有被窃听的工作副本(与IUSR和本地帐户)共享,而破坏的工作副本没有共享,但共享永远不会被用户更改.

Ber*_*ben 16

当subversion更新文件时,它首先在.svn/tmp /中创建一个临时版本.然后它将文件移动到正确的位置.(这是为了避免腐败)

在1.6中,它为每个目录单独执行此操作,但在1.7中,工作副本的顶级目录中只有一个.svn.

如果以某种方式限制此.svn目录的文件系统权限,则可能会在文件移动到位时将其与文件一起复制.(Subversion不会在Windows上更改权限本身)


Mor*_*sen 3

我通过访问网站文件夹的安全设置并单击“高级”,然后单击“更改 IIS_IUSRS 用户的权限”解决了此问题。我选中“用该对象的可继承权限替换所有子对象权限”,然后单击“应用”。

在此之前,我已授予 IIS 用户对结账根目录中隐藏的 tmp 文件夹的完全权限,但我不知道这是否有帮助。

我不确定这是否是永久修复,但如果不是,您至少可以使用它在单个操作中重新应用所有文件的权限。