2010-06-30 10 views
6

मैं एक सी # एप्लिकेशन लिखने का प्रयास कर रहा हूं जो टीएफएस से जुड़ता है और कार्य आइटम की जानकारी पुनर्प्राप्त करता है। दुर्भाग्यवश, ऐसा लगता है कि टीएफएस एसडीके का उपयोग करने के सभी उदाहरण वर्तमान उपयोगकर्ता के लिए डिफ़ॉल्ट क्रेडेंशियल का उपयोग कर रहे हैं (यानी मेरी डोमेन लॉगिन जानकारी)। मुझे मिली जानकारी का सबसे नज़दीकी टुकड़ा TeamFoundationServer (String, ICredentials) कन्स्ट्रक्टर का उपयोग करना है, हालांकि मुझे ICredentials इंटरफ़ेस के साथ इंटरफ़ेस के लिए उपयुक्त वर्ग के लिए कोई जानकारी नहीं मिल रही है (विशेष रूप से ऐसा लगता है कि यह System.Net ICredentials का उपयोग नहीं कर रहा है लेकिन एक टीमफाउंडेशन सर्वर विशिष्ट आईसीडेंशियल) ।विशिष्ट क्रेडेंशियल्स का उपयोग करके आप सी # में किसी TFS सर्वर से कैसे कनेक्ट होते हैं?

क्या किसी के पास किसी विशिष्ट उपयोगकर्ता नाम/पासवर्ड/डोमेन संयोजन के साथ टीएफएस में लॉग इन करने की कोई अंतर्दृष्टि है?

उत्तर

16

निम्नलिखित कोड आप मदद करनी चाहिए:

NetworkCredential cred = new NetworkCredential("Username", "Password", "Domain"); 
tfs = new TeamFoundationServer("http://tfs:8080/tfs", cred); 
tfs.EnsureAuthenticated(); 

डोमेन या तो वास्तविक डोमेन, या एक कार्यसमूह स्थिति में, यह सर्वर है कि TFS आवेदन टीयर होस्ट करता है के नाम पर होगा।

// Connect to TFS Work Item Store 
ICredentials networkCredential = new NetworkCredential(tfsUsername, tfsPassword, domain); 
Uri tfsUri = new Uri(@"http://my-server:8080/tfs/DefaultCollection"); 
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(tfsUri, networkCredential); 
WorkItemStore witStore = new WorkItemStore(tfs); 

यदि वह काम नहीं करता है, (अन्य Credential कक्षाओं के माध्यम से साख पारित करने के लिए कोशिश मेरे लिए काम किया: लाइन नीचे

+0

बहुत बढ़िया काम किया! धन्यवाद। – KallDrexx

+2

ध्यान दें कि 'TFFofitionServer' को 'Tfs कॉन्फ़िगरेशन सर्वर' के पक्ष में बहिष्कृत कर दिया गया है, लेकिन यह कोड इसके लिए भी मान्य है। –

3

साल, यह आप इसे कैसे TFS 2013 API के साथ क्या है):

// Translate username and password to TFS Credentials 
ICredentials networkCredential = new NetworkCredential(tfsUsername, tfsPassword, domain); 
WindowsCredential windowsCredential = new WindowsCredential(networkCredential); 
TfsClientCredentials tfsCredential = new TfsClientCredentials(windowsCredential, false); 

// Connect to TFS Work Item Store 
Uri tfsUri = new Uri(@"http://my-server:8080/tfs/DefaultCollection"); 
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(tfsUri, tfsCredential); 
WorkItemStore witStore = new WorkItemStore(tfs); 
+0

आप दो अनावश्यक वस्तुओं को बनाने के बजाय, 'नेटवर्क क्रेडेंशियल' को सीधे 'TfsTeamProjectCollection' पर क्यों नहीं पास करते हैं? –

+0

ठीक है, मैंने कोशिश की, और मुझे कुख्यात 'मूल प्रमाणीकरण के लिए सर्वर की त्रुटि से एक सुरक्षित कनेक्शन की आवश्यकता है। मेरे विंडोज प्रमाण पत्र प्रबंधक प्रविष्टियों को साफ़ करने के बाद भी यह अभी भी हो रहा था। तब मैंने थोड़ा सा प्रयोग किया जब तक कि यह काम नहीं करता। हो सकता है कि आप सही हों और आपको इसकी आवश्यकता नहीं है :-) बस किसी और को परेशानी करना चाहते हैं – Heliac

+0

प्रतिक्रिया के लिए धन्यवाद - यह अप्रत्याशित है, इसलिए मैं यह सुनिश्चित कर दूंगा कि हम इसमें देखेंगे। –

7

TFS 2015 & 2017, वस्तुओं और तरीकों से ऊपर किया गया है (या जा रहा है) पदावनत कर रहे हैं। विशिष्ट प्रमाण-पत्रों का उपयोग करके टीएफएस से कनेक्ट करने के लिए:

// For TFS 2015 & 2017 

    // Ultimately you want a VssCredentials instance so... 
    NetworkCredential netCred = new NetworkCredential(@"DOMAIN\user.name", @"Password1"); 
    WindowsCredential winCred = new WindowsCredential(netCred); 
    VssCredentials vssCred = new VssClientCredentials(winCred); 

    // Bonus - if you want to remain in control when 
    // credentials are wrong, set 'CredentialPromptType.DoNotPrompt'. 
    // This will thrown exception 'TFS30063' (without hanging!). 
    // Then you can handle accordingly. 
    vssCred.PromptType = CredentialPromptType.DoNotPrompt; 

    // Now you can connect to TFS passing Uri and VssCredentials instances as parameters 
    Uri tfsUri = new Uri(@"http://tfs:8080/tfs"); 
    var tfsTeamProjectCollection = new TfsTeamProjectCollection(tfsUri, vssCred); 

    // Finally, to make sure you are authenticated... 
    tfsTeamProjectCollection.EnsureAuthenticated(); 

आशा है कि इससे मदद मिलती है।

संबंधित मुद्दे

 संबंधित मुद्दे