TFS2012/IIS7.5和Windows授权
我开发了web应用程序,它与TFS2012合作。在我的本地计算机中,它可以正常工作,但当我在服务器上部署时,会出现以下异常: [WebException:远程服务器返回错误:(401)未经授权。] System.Net.HttpWebRequest.GetResponse()+6440920 Microsoft.TeamFoundation.Client.Channel.TfsHttpWebRequest.SendRequestAndGetResponse(httpWebRequestWebRequest、WebException和WebException)+195 我的连接到TFS代码:TFS2012/IIS7.5和Windows授权,iis,iis-7.5,Iis,Iis 7.5,我开发了web应用程序,它与TFS2012合作。在我的本地计算机中,它可以正常工作,但当我在服务器上部署时,会出现以下异常: [WebException:远程服务器返回错误:(401)未经授权。] System.Net.HttpWebRequest.GetResponse()+6440920 Microsoft.TeamFoundation.Client.Channel.TfsHttpWebRequest.SendRequestAndGetResponse(httpWebRequestWebRe
_collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://xxx/tfs/TestPrjects/"));
_collection.EnsureAuthenticated();
_store = _collection.GetService<WorkItemStore>();
\u collection=tfstreamprojectcollectionfactory.GetTeamProjectCollection(新Uri(“http://xxx/tfs/TestPrjects/"));
_集合。确保重新验证();
_store=_collection.GetService();
我的web配置:
<system.web>
<customErrors mode="Off"></customErrors>
<authentication mode="Windows"/>
...
<system.web>
...
在ISS中,我激活Windows授权:
我的错误在哪里?您用于访问TFS的详细信息不正确 它在本地计算机上工作的原因是,Web服务器以您的身份运行,您有权访问TFS。在IIS服务器上,它以应用程序池用户的身份运行,该用户无权访问 潜在解决方案 以有权访问TFS的用户身份运行应用程序池(或授予当前用户访问权限)
这对于只读访问来说是可以的,但是如果您要写回条目,您可能不想走这条路 启用委派,以便连接到TFS的代码以当前已验证的windows用户身份运行 这要难得多,而且只能在internet explorer中开箱即用。Firefox用户可以更改设置,Chrome用户需要使用命令行开关启动Chrome 使用(WindowsIdentity.GetCurrent().Impersonate()){}包装使用TFS的代码,并确保使用CredentialCache.DefaultNetworkCredentials连接到TFS 使用TFS服务器API
淘气点,用服务器代替客户端api。服务器API直接写入数据库,不需要模拟用户。我非常怀疑这是一条受支持的路径,并且你不会找到太多关于它的信息。但是,它仍然需要以具有db访问权限的用户身份运行(与选项1类似,但支持以windows授权用户身份进行更新)用于访问TFS的详细信息不正确 它在本地计算机上工作的原因是,Web服务器以您的身份运行,您有权访问TFS。在IIS服务器上,它以应用程序池用户的身份运行,该用户无权访问 潜在解决方案 以有权访问TFS的用户身份运行应用程序池(或授予当前用户访问权限)
这对于只读访问来说是可以的,但是如果您要写回条目,您可能不想走这条路 启用委派,以便连接到TFS的代码以当前已验证的windows用户身份运行 这要难得多,而且只能在internet explorer中开箱即用。Firefox用户可以更改设置,Chrome用户需要使用命令行开关启动Chrome 使用(WindowsIdentity.GetCurrent().Impersonate()){}包装使用TFS的代码,并确保使用CredentialCache.DefaultNetworkCredentials连接到TFS 使用TFS服务器API 淘气点,用服务器代替客户端api。服务器API直接写入数据库,不需要模拟用户。我非常怀疑这是一条受支持的路径,并且你不会找到太多关于它的信息。但是,它仍然需要以具有db访问权限的用户身份运行(与选项1类似,但支持以windows授权用户身份进行更新)