none
同一IIS部署两个使用TFSAPI的WebService,返回: System.Runtime.InteropServices.COMException: 对 COM 组件的调用返回了错误 RRS feed

  • 问题

  • 返回内容:System.Runtime.InteropServices.COMException: 对 COM 组件的调用返回了错误 HRESULT E_FAIL

    - IIS相关的问题,新建网站无法解决,最后把两个webservice合并。

    - 与TFS接口有关,测试得 与tfs不相关的操作都不受限制

    出错代码:

    TestCredential connect = new TestCredential();
    
    ICredentials iCred = new NetworkCredential(ConfigInfo.username, ConfigInfo.password, ConfigInfo.domain);
    
    connect.GetCredentials(new Uri(ConfigInfo.tfsUrl), iCred);
    
    TfsConfigurationServer configurationServer =
                                   TfsConfigurationServerFactory.GetConfigurationServer(new Uri(ConfigInfo.tfsUrl), connect);
    
    configurationServer.EnsureAuthenticated();
    
    CatalogNode catalogNode = configurationServer.CatalogNode;
    
    ReadOnlyCollection<CatalogNode> tpcNodes = catalogNode.QueryChildren(
                                new Guid[] { CatalogResourceTypes.ProjectCollection },
                                false, CatalogQueryOptions.None);
    WorkItemStore wis = null;
    foreach (CatalogNode tpcNode in tpcNodes){
        Guid tpcId = new Guid(tpcNode.Resource.Properties["InstanceId"]);
        TfsTeamProjectCollection tpc = configurationServer.GetTeamProjectCollection(tpcId);
        if (tpc.Name.IndexOf(ConfigInfo.tpcName, StringComparison.OrdinalIgnoreCase) >= 0)
            wis = tpc.GetService<WorkItemStore>();
    }
    
    
    public class TestCredential : ICredentialsProvider
        {
            public ICredentials GetCredentials(Uri uri, ICredentials iCredentials)
            {
                return new NetworkCredential(ConfigInfo.username, ConfigInfo.password, ConfigInfo.domain);
            }
    
            public void NotifyCredentialsAuthenticated(Uri uri)
            {
                throw new ApplicationException("Unable to authenticate");
            }
        }

    每次执行到 wis = tpc.GetService<WorkItemStore>() 即报错如上

    感谢您的任何意见与建议。


    TFS C#开发不动人员 这个职业不广泛

    2016年1月15日 7:55

答案

  • 你好

    你可以尝试清除一下TFS的缓存 C:\ProgramData\Microsoft Team Foundation\6.0\Cache

    TFS 2015 对应6.0文件夹,TFS 2013对应5.0文件夹。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Allen WOE 2016年1月21日 0:29
    2016年1月18日 8:36
    版主
  • 感谢,这里清除缓存 能够让WebService中tfs getservice()恢复正常。

    但是:缓存是唯一的,不能同时持有两个WebService同时只是 getservice<>()的操作。

    再次感谢。


    TFS C#开发不动人员 这个职业不广泛

    2016年1月21日 0:31

全部回复

  • 你好

    你可以尝试清除一下TFS的缓存 C:\ProgramData\Microsoft Team Foundation\6.0\Cache

    TFS 2015 对应6.0文件夹,TFS 2013对应5.0文件夹。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Allen WOE 2016年1月21日 0:29
    2016年1月18日 8:36
    版主
  • 感谢,这里清除缓存 能够让WebService中tfs getservice()恢复正常。

    但是:缓存是唯一的,不能同时持有两个WebService同时只是 getservice<>()的操作。

    再次感谢。


    TFS C#开发不动人员 这个职业不广泛

    2016年1月21日 0:31