我开发了网络应用程序,它与TFS2012合作。在我的本地机器中,它可以正常工作,但是当我在服务器上部署时,我会得到以下异常:
WebException:远程服务器返回一个错误:(401)未经授权。+6440920 Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequestAndGetResponse(HttpWebRequest webRequest,WebException& webException) +195
我连接到TFS代码:
_collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://xxx/tfs/TestPrjects/"));
_collection.EnsureAuthenticated();
_store = _collection.GetService<WorkItemStore>();我的web-config:
<system.web>
<customErrors mode="Off"></customErrors>
<authentication mode="Windows"/>
...
<system.web>在ISS中,我激活Windows授权:

我的错误在哪里?
发布于 2012-09-24 03:52:30
用于访问TFS的详细信息是不正确的。
它在本地机器上工作的原因是,who服务器与您一样运行,后者有权访问TFS。在IIS服务器上,它以应用程序池用户的身份运行,没有访问权限。
潜在解决方案
以有权访问TFS (或授予当前用户访问权限)的用户身份运行应用程序池
这对于只读访问是可以的,但是如果您正在回写项目,您可能不想沿着这条路线走下去。
启用委托,因此连接到TFS的代码作为当前通过身份验证的windows用户运行,这要困难得多,而且只在internet中使用。Firefox用户可以更改设置,Chrome用户需要使用命令行开关启动chrome。
围绕使用TFS的代码包装using(WindowsIdentity.GetCurrent().Impersonate()) {},并确保使用CredentialCache.DefaultNetworkCredentials连接到TFS。
使用TFS ,调皮,使用服务器而不是客户机api。服务器API直接写入数据库,不需要模拟用户。我非常怀疑这是一个支持的路径,您将不会在其中找到太多的信息。但是,它仍然需要以访问db的用户的身份运行(就像选项1一样,但支持作为windows创作用户的更新)。
https://stackoverflow.com/questions/12499340
复制相似问题