2012-02-06 21 views
6

मैंने चल रहे TFS सर्वर के लिए वर्कटाइमस्टोर से कनेक्ट करने के दो तरीकों का प्रयास किया है। प्रयास ए कॉन्फ़िगरेशन सर्वर से कनेक्ट करना था और GetService<WorkItemStore>() विधि का उपयोग करना था। यह हमेशा शून्य देता है।कोई सफलतापूर्वक TFS 2010 वर्कटाइम स्टोर से कैसे जुड़ता है?

प्रयास बी TfsTeamProjectCollection से कनेक्ट करना था और GetService<WorkItemStore>() विधि का उपयोग करें या प्रोजेक्ट संग्रह को WorkItemStore कंस्ट्रक्टर में पास करें। प्रयास बी पर, मुझे एक अपवाद मिलता है कि "त्रुटि HRESULT E_FAIL को कॉल से COM घटक में वापस कर दिया गया है।" उस पर एकमात्र जानकारी जो मुझे मिल सकती है, कुछ अनुमति समस्याएं इंगित करती है, लेकिन मैंने पुष्टि की है कि मैं पूरे प्रोजेक्ट संग्रह में पढ़ने के लिए उपयोगकर्ता के रूप में प्रमाणित हूं और मैं वीएस 2011 देव पूर्वावलोकन के माध्यम से उचित रूप से कनेक्ट और दखल देता हूं।

यहाँ मैं कैसे जोड़ने हूँ ...

public TfsConfigurationServer GetConfigurationServer() 
    { 
     Uri tfsUri = new Uri(configs.TfsUri); 
     TfsConfigurationServer server = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri, credProvider); 
     server.Authenticate(); 
     if (server.HasAuthenticated == false) 
      throw new InvalidOperationException("You can't authenticate against the tfs instance."); 
     return server; 
    } 

    public TfsTeamProjectCollection GetProjectCollectionInstance(string projectCollectionName) 
    { 
     Uri tfsUri = new Uri(configs.TfsUri + "/" + projectCollectionName);   
     TfsTeamProjectCollection collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri, credProvider); 
     collection.Authenticate(); 
     if (collection.HasAuthenticated == false) 
      throw new InvalidOperationException("You can't authenticate against the tfs instance."); 
     return collection; 
    } 

और यहाँ कैसे मैं (समस्या को वर्णन करने मूर्खतापूर्ण कोड) WorkItemStore पाने के लिए कोशिश कर रहा हूँ है ...

public WorkItemProvider() 
    { 
     if (workItems == null) 
      workItems = ServerProvider.ServerInstance.GetService<WorkItemStore>(); 
     if (workItems == null) 
      workItems = ServerProvider.ProjectCollectionInstance.GetService<WorkItemStore>(); 
     if (workItems == null) 
      workItems = new WorkItemStore(ServerProvider.ProjectCollectionInstance); 
     if (workItems == null) 
      throw new NullReferenceException("Couldn't load work item store."); 
    } 

मैं मैं सर्वर के समान डोमेन पर नहीं हूं, लेकिन मैं एक डोमेन उपयोगकर्ता के रूप में प्रमाणीकरण कर रहा हूं जिसमें एक आईसीडेंशियल प्रदाता है और मैंने पुष्टि की है कि मैं उस उपयोगकर्ता के रूप में प्रमाणित हूं। कोई संकेतक सहायक होगा।

+0

अतिरिक्त जानकारी: एक ही कोड विंडोज़ ऑथ और प्रतिरूपण का उपयोग कर हमारे डोमेन में कंप्यूटर पर ठीक काम करता है। मुझे लगता है कि मैं इसे डोमेन से बाहर नहीं कर सकता? मैं विजुअल स्टूडियो से कर सकता हूं, इसलिए यह समझ में नहीं आता है। हो सकता है कि अगर मैं डोमेन पर नहीं हूं तो भी मैं डोमेन उपयोगकर्ता का प्रतिरूपण कर सकता हूं? – sonicblis

उत्तर

2

चेक अगर यह तुम क्या जरूरत है:

using System; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.Client; 

namespace GetsWorkItem 
{ 
    class Program 
    { 
     static void Main() 
     { 
      TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://<TFS>:8080/tfs/<COLLECTION>")); 
      WorkItemStore workItemStore= (WorkItemStore) teamProjectCollection.GetService(typeof (WorkItemStore)); 

      WorkItem workItem = workItemStore.GetWorkItem(1234); 
     } 
    } 
} 
+1

एक कंसोल ऐप में काम करता है (एक बार जब मैं प्रमाणीकरण जोड़ता हूं), तो मेरे वेब ऐप में काम नहीं करता है। मेरे प्रश्न में बी के प्रयास के समान त्रुटि। – sonicblis

+0

मुझे खेद है कि यह आपके लिए काम नहीं कर सका – pantelif

0

मेरा मानना ​​है कि this article अपने सवाल का जवाब देने में सक्षम हो सकता है। इसमें कहा गया है कि अगर आप एक अलग तरीके से अपने WorkItemStore का दृष्टांत, आप एक अलग अपवाद मिल जाएगा:

System.TypeInitializationException: The type initializer for ‘Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore’ threw an exception. —> System.IO.FileLoadException: Mixed mode assembly is built against version ‘v2.0.50727′ of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

ठीक एक सरल web.config परिवर्तन है, निम्न को जोड़कर:

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

आशा है कि इससे मदद मिलती है! जब मुझे एक ही त्रुटि मिल रही थी तो मेरे लिए काम किया।