PDA

View Full Version : سوال: در صورت موجود بودن فايل File.Exists نتيجه false برمي گرداند.



emrooz
شنبه 01 اسفند 1394, 10:48 صبح
با سلام
من در يك قسمت از برنامه از File.Exists استفاده مي كنم . در local نتيجه رو درست برمي گردونه، اما وقتي برنامه رو روي سرور up مي كنم در هرصورت false رو برمي گردونه. مشكل permission هم نداره.
لطفا راهنمايي بفرماييد.
ممنونم

اول از اين كد استفاده كردم:

string adr = @"\\192.168.0.120\Job\Scan\1234.jpg";
if (!File.Exists(adr))
lblMessage.Text="invalid"


بعد آدرس رو به اين شكل تغيير دادم:

string adr = @"D:\Job\Scan\1234.jpg";

و بعد كد رو به اين شكل:

FileInfo fi = new FileInfo(@"D:\Job\Scan\1234.jpg");
if (!fi.Exists)
lblMessage.Text="invalid"


اما در هر سه حالت نتيجه رو در سرور false برمي گردونه.
لوكال VS2008 و سرور win server2008 مي باشد.

محمد رضا فاتحی
یک شنبه 02 اسفند 1394, 04:25 صبح
دوست عزیز...
این کد در صورت عدم وجود فایل در مسیر یاد شده پیام را نمایش می دهد...

if (!File.Exists(fileaddress))
{


lblerror.Text = "File Not Found...";
}


اگه این کد جواب نداد باید مشکل رو در وجود فایل یا... جستجو کرد...

emrooz
یک شنبه 02 اسفند 1394, 05:00 صبح
دوست عزیز...
این کد در صورت عدم وجود فایل در مسیر یاد شده پیام را نمایش می دهد...

if (!File.Exists(fileaddress))
{


lblerror.Text = "File Not Found...";
}


اگه این کد جواب نداد باید مشکل رو در وجود فایل یا... جستجو کرد...

ممنون از جوابتون،‌اما همونطور كه گفتم اين كد در سيستم خودم (VS2008) درست عمل مي كنه، اما در سرور winServer 2008 ، هميشه نتيجش false.

nunegandom
یک شنبه 02 اسفند 1394, 11:02 صبح
با مرورگر ببین اصلا بازش میکنه؟

zayens
یک شنبه 02 اسفند 1394, 11:28 صبح
اما خب حالا چند تا راه هست که بهت میگم:
1-
if(File.Exists(Server.MapPath(wordDocName))
2-
توی درایو ها نباید از مثلا \:D استفاده کنی از دالر استفاده کن
System.IO.File.Exists(@"\\ourvideoserver\D$\pcode\videofile_name.mp4")
3- مطلب بعدی اینکه پوشه Job را حتما share کن

emrooz
دوشنبه 03 اسفند 1394, 08:37 صبح
اما خب حالا چند تا راه هست که بهت میگم:
1-
if(File.Exists(Server.MapPath(wordDocName))
2-
توی درایو ها نباید از مثلا \:D استفاده کنی از دالر استفاده کن
System.IO.File.Exists(@"\\ourvideoserver\D$\pcode\videofile_name.mp4")
3- مطلب بعدی اینکه پوشه Job را حتما share کن

تصوير با مرورگر باز ميشه.

ببينيد مشكل permission و share نيست . من حتي آدرس يه فايل رو در كامپيوتري غير از كامپيوتر لوكال و سرور در File.Exists گذاشتم، نتيجه اجرا در لوكال true و اجرا در سرور false بود.
ممكنه يه پيش فرض هايي در ويندوز سرور 2008 وجود داشته باشه كه با وي‍ژوال استوديو 2008 فرق بكنه؟؟؟

لطفا راهنمايي كنيد، تمام كارم به خاطر همين ايراد جزئي بي استفاده شده، خيلي فوريه...

zayens
دوشنبه 03 اسفند 1394, 09:28 صبح
از این کد استفاده کن ببین چی برمیگردونه
فقط اینکه مسیر فایل را قرار نده مسیر پوشه قرار بده
1- string[] _Havs = Directory.GetFiles(@"D:\Job\Scan", "*.*");

2- اینم یه چک کن
if (!Directory.Exists(@"D:\Job\Scan")) {
lblMessage.Text="invalid";
}

t3rr0r1st
دوشنبه 03 اسفند 1394, 09:30 صبح
در سرور برنامه رو با File.Exists پیاده سازی کنید و Run As Administrator کنید ببینید مشکل حل می شه.

emrooz
دوشنبه 03 اسفند 1394, 15:51 عصر
از این کد استفاده کن ببین چی برمیگردونه
فقط اینکه مسیر فایل را قرار نده مسیر پوشه قرار بده
1- string[] _Havs = Directory.GetFiles(@"D:\Job\Scan", "*.*");

2- اینم یه چک کن
if (!Directory.Exists(@"D:\Job\Scan")) {
lblMessage.Text="invalid";
}



چک کردم ، لوکال نتیجه رو برمی گردوونه، اما در سرور دایرکتوری رو میگه موجود نیست، در صورتی که وجود داره.


در سرور برنامه رو با File.Exists پیاده سازی کنید و Run As Administrator کنید ببینید مشکل حل می شه.
برنامه تحت وبه (asp)


؟؟؟؟

Mahmoud.Afrad
دوشنبه 03 اسفند 1394, 17:11 عصر
چک کردم ، لوکال نتیجه رو برمی گردوونه، اما در سرور دایرکتوری رو میگه موجود نیست، در صورتی که وجود داره.

برنامه تحت وبه (asp)
؟؟؟؟
اگر فایل در پوشه پروژه هست، باید مسیر رو نسبت به ریشه پروژه(فولدر پروژه) بدید. اگر پروژه در پوشه job باشه به صورت زیر

string filePath = Server.MapPath(@"~\Scan\1234.jpg");
if (!File.Exists(filePath))
{
lblMessage.Text = "invalid";
}

emrooz
دوشنبه 03 اسفند 1394, 18:43 عصر
اگر فایل در پوشه پروژه هست، باید مسیر رو نسبت به ریشه پروژه(فولدر پروژه) بدید. اگر پروژه در پوشه job باشه به صورت زیر

string filePath = Server.MapPath(@"~\Scan\1234.jpg");
if (!File.Exists(filePath))
{
lblMessage.Text = "invalid";
}


پرووژه در یک پشه کنار پوشه Job هست. این به چه صورت میشه؟


البته مشکل با همه آدرس هاست. ببینید کامپیوتر خودم و سرور و یه کامپیوتر دیگه در یک شبکه هستند. فرض کنید آدرس یه فایل در کامپیوتر سوم به این شکله:
\\192.168.0.110\site\100.jpg
این آدرس اگه تو مرورگر بزنم عکس رو نشون میده. حالا اگه این آدرس به رو به File.Exists بدم (کامپیوتر خودم) میگه فایل وجود داره.
اما همین کد رو وقتی میزارم تو سرور و صفحه مربوطش رو در مرورگر باز می کنم میگه این فایل وجود نداره. در صورتیکه موقعیت کامپیوتر خودم و سرور نسبت به این فایل مثل همه، اما اینجا میگه فایل وجود داره و اونجا میگه وجود نداره.نمیدونم چی تغییر میکنه ؟؟؟؟!!!؟؟؟؟؟؟؟؟؟؟؟؟؟

Mahmoud.Afrad
دوشنبه 03 اسفند 1394, 22:27 عصر
این برای زمانی که پوشه job در مسیر پروژه باشه

string filePath = Server.MapPath(@"~\Job\Scan\1234.jpg");
if (!File.Exists(filePath))
{
lblMessage.Text = "invalid";
}
این برای زمانی که پوشه job و پوشه پروژه در کنار هم باشند:

string path = Server.MapPath(@"~");
DirectoryInfo dirInfo = new DirectoryInfo(path);
if (dirInfo.Parent != null)
{
string filePath = dirInfo.Parent.FullName + @"\Job\Scan\1234.jpg";
if (!File.Exists(filePath))
{
lblMessage.Text = "invalid";
}
}

همه کدها برای زمانی هست که برنامه و فایل مورد نظر روی یک کامپیوتر باشند.

emrooz
سه شنبه 04 اسفند 1394, 03:00 صبح
این برای زمانی که پوشه job در مسیر پروژه باشه

string filePath = Server.MapPath(@"~\Job\Scan\1234.jpg");
if (!File.Exists(filePath))
{
lblMessage.Text = "invalid";
}
این برای زمانی که پوشه job و پوشه پروژه در کنار هم باشند:

string path = Server.MapPath(@"~");
DirectoryInfo dirInfo = new DirectoryInfo(path);
if (dirInfo.Parent != null)
{
string filePath = dirInfo.Parent.FullName + @"\Job\Scan\1234.jpg";
if (!File.Exists(filePath))
{
lblMessage.Text = "invalid";
}
}

همه کدها برای زمانی هست که برنامه و فایل مورد نظر روی یک کامپیوتر باشند.

كد رو به اين شكل كه فرموديد تغيير دادم باز هم در لوكال جواب ميده و در سرور false برمي گردونه.
همونطور كه تو پست قبلي گفتم براي آدرس هاي كه مربوط به يه كامپيوتر ديگست هم نتيجه در سرور با لوكال فرق مي كنه ،
احتمالا مربوط به يه مسئله اي غير از نحوه آدرس دهيه!!!!!!!!

emrooz
سه شنبه 04 اسفند 1394, 06:16 صبح
كسي نظري نداره ؟؟؟؟
لطفا راهنمايي كنيد!!!

emrooz
سه شنبه 04 اسفند 1394, 09:52 صبح
كمك لطفا!!!!!!!!!!!!!!!!!

emrooz
چهارشنبه 05 اسفند 1394, 09:03 صبح
برنامه نويس هاي محترم
اگه كسي مشكل مشابهي داشته و يا چيزي به نظرش ميرسه بگه، شايد همون راه حل مشكل من باشه...:متفکر::متفکر:
خيلي جستجو كردم اما همه يا راجع به permission صحبت كردن يا آدرس دهي، ديگه نمي دونم چيكار كنم :گیج: