2010-05-22 17 views
70

मुझे यह त्रुटि मिल रही है।अमान्य यूआरआई: यूआरआई का प्रारूप निर्धारित नहीं किया जा सका

 
Invalid URI: The format of the URI could not be determined. 

कोड रहा है:

Uri uri = new Uri(slct.Text); 
if (DeleteFileOnServer(uri)) 
{ 
    nn.BalloonTipText = slct.Text + " has been deleted."; 
    nn.ShowBalloonTip(30); 
} 

संपादित करें: slct.Text में सामग्री ftp.jt-software.net/style.css है।

क्या देता है? यह वैध यूआरआई प्रारूप कैसे नहीं है? यह सादा पाठ है।

+0

यह मुझे slct की सामग्री बता रहा है। पाठ मान्य यूरी नहीं है। लकिन यह है। –

+1

@ जे-टी-एस: क्या आप शायद आपत्तिजनक यूआरआई पोस्ट कर सकते हैं? –

+0

क्या आप उरी को नई उरी के साथ बनाते समय या सर्वर पर फ़ाइल को हटाने का प्रयास करते समय अपवाद प्राप्त करते हैं? – Simon

उत्तर

46

चेक संभव यहाँ कारण हैं: http://msdn.microsoft.com/en-us/library/z6c2z492(v=VS.100).aspx

संपादित करें:

आप अपने मामले में पता, यानी सामने प्रोटोकॉल उपसर्ग लगाने की जरूरत है "एफ़टीपी: //"

+2

कुछ भी गलत नहीं है। मैं सब कुछ वास्तव में जल्दी से कर रहा था, और मैंने गलती से नीचे बटन पर क्लिक किया, और यह कहा कि जब तक सवाल संपादित नहीं किया जाता है, मैं इसे पूर्ववत नहीं कर सकता, इसलिए यदि आप कृपया अपना प्रश्न या कुछ संपादित कर सकते हैं, तो मैं आपको फिर से उठा सकता हूं :) क्षमा करें इसके बारे में :-(मेरा मतलब आपको –

+0

हेहे, एनपी को कम करने का मतलब नहीं था ... मैंने एक स्थान जोड़ा ...;) – Simon

+0

@jts: अब आप ऊपर जा सकते हैं ... दयालु होगा: डी – Simon

8

यह की तरह लगता है हो सकता है एक असली यूरी बनें। क्रॉस-ब्राउजर सिल्वरलाइट करते समय मैं इस समस्या में भाग गया; मेरे blog पर मैंने एक वर्कअराउंड का उल्लेख किया: पहले पैरामीटर के रूप में "संदर्भ" यूरी पास करें।

यदि उरी वास्तविक है, तो संदर्भ यूरी का उपयोग पूर्ण यूरी बनाने के लिए किया जाता है। यदि यूरी पूर्ण है, तो संदर्भ यूरी को नजरअंदाज कर दिया जाता है।

संपादित करें: आप एक "योजना" URI, जैसे, में की जरूरत है "एफ़टीपी: //" या "http: //"

72

यह उरी के लिए एक अलग निर्माता का उपयोग करने में मदद कर सकते हैं।

आप सर्वर नाम

string server = "http://www.myserver.com"; 

है और यह है, उदा में जोड़ने के लिए एक रिश्तेदार उरी पथ है, तो

string relativePath = "sites/files/images/picture.png" 

इन दोनों से एक उरी बनाने जब मैं अर्थात

// this works, because the protocol is included in the string 
Uri serverUri = new Uri(server); 

// needs UriKind arg, or UriFormatException is thrown 
Uri relativeUri = new Uri(relativePath, UriKind.Relative); 

// Uri(Uri, Uri) is the preferred constructor in this case 
Uri fullUri = new Uri(serverUri, relativeUri); 
10

बेहतर उपयोग Uri.IsWellFormedUriString(string uriString, UriKind uriKind) जब तक कि मैं UriKind तर्क के साथ निर्माता का उपयोग करें "प्रारूप निर्धारित नहीं किया जा सकता है" अपवाद मिलता है। http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx

उदाहरण: -

if(Uri.IsWellFormedUriString(slct.Text,UriKind.Absolute)) 
{ 
     Uri uri = new Uri(slct.Text); 
     if (DeleteFileOnServer(uri)) 
     { 
      nn.BalloonTipText = slct.Text + " has been deleted."; 
      nn.ShowBalloonTip(30); 
     } 
} 
2

मैं बजाय UriBuilder का उपयोग करके यह चारों ओर से काम किया।

UriBuilder builder = new UriBuilder(slct.Text); 

if (DeleteFileOnServer(builder.Uri)) 
{ 
    ... 
} 
संबंधित मुद्दे