[c#] "تنسيق المسار المحدد غير معتمد."



Answers

أرى أن المنشئ اكتشف أن الخطأ وقع عند محاولة حفظ اسم الملف بمسار بأكمله. في الواقع يكفي أن يكون ":" في اسم الملف للحصول على هذا الخطأ. إذا كان هناك ":" في اسم الملف الخاص بك (على سبيل المثال إذا كان لديك طابع تاريخ في اسم الملف الخاص بك) تأكد من استبدالها بشيء آخر. أي:

string fullFileName = fileName.Split('.')[0] + "(" + DateTime.Now.ToString().Replace(':', '-') + ")." + fileName.Split('.')[1];
Question

لدي الشفرة التالية في خدمة الويب الخاصة بي:

string str_uploadpath = Server.MapPath("/UploadBucket/Raw/");
FileStream objfilestream = new FileStream(str_uploadpath +
                fileName, FileMode.Create, FileAccess.ReadWrite);

يمكن للشخص أن يساعدني في حل المشكلة مع رسالة الخطأ هذه من السطر 2 من التعليمات البرمجية.

تنسيق المسار المحدد غير معتمد.

يتم تعيين الإذن على المجلد إلى الوصول الكامل إلى الجميع وهو المسار الفعلي إلى المجلد.

أعطتني نقطة التوقف قيمة str_uploadpath مثل C:\\webprojects\\webservices\\UploadBucket\\Raw\\ .

ما هو الخطأ في هذه السلسلة؟




كانت هذه مشكلتي ، والتي قد تساعد شخصًا آخر - على الرغم من أنها لم تكن مشكلة OP:

DirectoryInfo diTemp = new DirectoryInfo(strSomePath);
FileStream fsTemp = new FileStream(diTemp.ToString());

لقد قمت بتحديد المشكلة بإخراج المسار إلى ملف السجل ، والعثور عليه ليس التنسيق بشكل صحيح. الصحيح بالنسبة لي كان بكل بساطة:

DirectoryInfo diTemp = new DirectoryInfo(strSomePath);
FileStream fsTemp = new FileStream(diTemp.FullName.ToString());



حاول تغيير:

Server.MapPath("/UploadBucket/Raw/")

إلى

Server.MapPath(@"\UploadBucket\Raw\")




من بين الأشياء الأخرى التي يمكن أن تسبب هذا الخطأ:

لا يمكن أن يكون لديك أحرف معينة في سلسلة PathFile الكاملة.

على سبيل المثال ، ستؤدي هذه الأحرف إلى تعطل الدالة StreamWriter:

"/"  
":"

قد تكون هناك شخصيات خاصة أخرى تحطمها أيضًا. لقد وجدت هذا يحدث عند محاولة ، على سبيل المثال ، لوضع طابع DateTime في اسم الملف:

AppPath = Path.GetDirectoryName(giFileNames(0))  
' AppPath is a valid path from system. (This was easy in VB6, just AppPath = App.Path & "\")
' AppPath must have "\" char at the end...

DateTime = DateAndTime.Now.ToString ' fails StreamWriter... has ":" characters
FileOut = "Data_Summary_" & DateTime & ".dat"
NewFileOutS = Path.Combine(AppPath, FileOut)
Using sw As StreamWriter = New StreamWriter(NewFileOutS  , True) ' true to append
        sw.WriteLine(NewFileOutS)
        sw.Dispose()
    End Using

إحدى الطرق لمنع هذه المشكلة هي استبدال أحرف المشكلة في NewFileOutS مع تلك الحميدة:

' clean the File output file string NewFileOutS so StreamWriter will work
 NewFileOutS = NewFileOutS.Replace("/","-") ' replace / with -
 NewFileOutS = NewFileOutS.Replace(":","-") ' replace : with - 

' after cleaning the FileNamePath string NewFileOutS, StreamWriter will not throw an (Unhandled) exception.

آمل أن هذا ينقذ شخص ما بعض الصداع ...!




Related