Mercurial在IIS 8.5和Windows 2012 R2上使用网络共享

Mercurial在IIS 8.5和Windows 2012 R2上使用网络共享,iis,version-control,mercurial,Iis,Version Control,Mercurial,我正在IIS 8.5和Windows Server 2012 R2上安装Mercurial 3.6.2。除了我们不能为位于网络驱动器上的存储库提供服务这一事实之外,一切都按预期进行。网络repo具有读/写权限,并为文件系统上的每个人共享 我们的hgweb.config的[path]部分如下所示: [paths] Repo1 = c:\hg\repo_xxx Repo2 = d:\hg\repo_xxx Network_repo = \\ServerName\hg\repo_xxx 前两个rep

我正在IIS 8.5和Windows Server 2012 R2上安装Mercurial 3.6.2。除了我们不能为位于网络驱动器上的存储库提供服务这一事实之外,一切都按预期进行。网络repo具有读/写权限,并为文件系统上的每个人共享

我们的hgweb.config的[path]部分如下所示:

[paths]
Repo1 = c:\hg\repo_xxx
Repo2 = d:\hg\repo_xxx
Network_repo = \\ServerName\hg\repo_xxx
前两个repo由IIS提供,没有任何问题,另一方面,网络repo给出了“错误访问存储库”异常。在我们的生产环境中,我们不能将repo托管在与web服务器相同的机器上


有什么办法解决这个问题吗?

我已经找到了解决办法。IIS在为具有直通身份验证的网络repo提供服务时遇到安全问题。解决方法是使用特定用户的凭据,该用户在网站级别具有适当的权限。(不是应用程序池级别!)

因此,在IIS管理器中:

  • 选择您的网站,单击右侧面板中的“基本设置”
  • 单击“连接为…”按钮
  • 选择特定用户,单击设置
  • 提供具有足够权限的用户(域\用户名)和密码