অবৈধ ইউআরআই: ইউআরআই এর ফর্ম্যাটটি নির্ধারণ করা যায়নি


115

আমি এই ত্রুটি পেতে থাকি।

অবৈধ ইউআরআই: ইউআরআই এর ফর্ম্যাটটি নির্ধারণ করা যায়নি।

আমার কাছে কোডটি হ'ল:

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

কি দেয়? কীভাবে এটি বৈধ ইউআরআই ফর্ম্যাট নয়? এটি সাধারণ পাঠ্য।


এটি আমাকে স্ল্যাক্টের সামগ্রীটি বলছে e পাঠ্যটি বৈধ উরি নয়। তবে তা হয়।

1
@ জেটস: আপনি সম্ভবত আপত্তিজনক ইউআরআই পোস্ট করতে পারেন?
মিচ গম

নতুন উরি দিয়ে উরি তৈরি করার সময় বা সার্ভারে ফাইলটি মুছতে গিয়ে আপনি কী ব্যতিক্রম পেয়েছেন?
সাইমন

2
আপত্তিজনক ইউরি হ'ল: ftp.jt-software.net/style.css

2
@ জেটস, আমি ধরে নিচ্ছি যে এই ডাউনভোটগুলি এমন লোকদের কাছ থেকে এসেছিল যারা কোনও মন্তব্য করেছিল এবং জানতে পেরেছিল যে আপনি নিজের উত্তর আপডেট করেননি। দ্রষ্টব্য, আপনি নিজের প্রশ্নটি সম্পূর্ণ করতে (এবং উত্তরগুলি গ্রহণ করুন), এসও পরিষ্কার রাখার জন্য সম্পাদনা করতে পারেন। আপনি অনুপস্থিত ftp://বা http://আপনার ইউআরআইতে রয়েছেন । আপনি এখন আমার ভোট পান ;-)
আবেল

উত্তর:


126

এটি উরির জন্য আলাদা কনস্ট্রাক্টর ব্যবহার করতে সহায়তা করতে পারে।

আপনার যদি সার্ভারের নাম থাকে

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);

59

এখানে সম্ভাব্য কারণগুলি পরীক্ষা করুন: http://msdn.microsoft.com/en-us/library/z6c2z492(vVV.1.100).aspx

সম্পাদনা করুন:

আপনার ঠিকানার সামনে প্রোটোকল উপসর্গ স্থাপন করা দরকার, অর্থাত আপনার ক্ষেত্রে "ftp: //"


3
কিছুতেই ভুল হয়নি। আমি সত্যিই দ্রুত সবকিছু করছি, এবং আমি দুর্ঘটনাক্রমে ডাউন বোতামটি ক্লিক করেছি এবং এটি বলেছে যে প্রশ্নটি সম্পাদনা না করা হলে আমি এটিকে পূর্বাবস্থায় ফেলাতে পারছি না, তাই যদি আপনি দয়া করে আপনার প্রশ্ন বা কোনও কিছু সম্পাদনা করতে পারতেন তবে আমি আপনাকে পুনরায় উজ্জীবিত করতে পারি :) তাই দুঃখিত এ সম্পর্কে :-( আমি আপনাকে

জেটের পরিবর্তে ভোট দেওয়া যেহেতু পরেরটি নিখোঁজ হয়েছে :)
অ্যান্ডি

1
@ সিমন, আমি আপনাকে আবারো ইউপিতে ভোট দিয়েছি, বিশাল বিলম্বের জন্য দুঃখিত! আপনি আমাকে

13

এটির মতো সাশ্রয়ী uri হতে পারে। ক্রস ব্রাউজার সিলভারলাইট করার সময় আমি এই সমস্যায় পড়েছি; আমার ব্লগে আমি একটি কাজের কথা উল্লেখ করেছি: প্রথম পরামিতি হিসাবে একটি "প্রসঙ্গ" uri পাস করুন।

যদি ইউরি বাস্তববাদী হয় তবে প্রসঙ্গের ইউরি একটি পূর্ণ ইউরি তৈরি করতে ব্যবহৃত হয়। যদি ইউরি নিখুঁত হয় তবে প্রসঙ্গের ইউরি উপেক্ষা করা হবে।

সম্পাদনা: আপনার ইউরিতে একটি "স্কিম" দরকার, উদাহরণস্বরূপ, "ftp: //" বা "http: //"


12

আরও ভাল ব্যবহার Uri.IsWellFormedUriString(string uriString, 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);
        }
 }

4
এটি কোনও সমাধান সরবরাহ করে না। এটি কেবল ইউআরআই সঠিক কিনা তা পরীক্ষা করে এবং যদি তাই হয় তবে এটি অবিরত থাকে।
আলেকজান্দ্রু ডিকু

8

পরিবর্তে আমি ইউরিবিল্ডার ব্যবহার করে এটি ঘিরে কাজ করেছি ।

UriBuilder builder = new UriBuilder(slct.Text);

if (DeleteFileOnServer(builder.Uri))
{
   ...
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.