PDA

View Full Version : سوال: StreamReader‌ در WebService و مشکل در خواندن مسیر فایل



L_eskandary
سه شنبه 11 آبان 1389, 09:13 صبح
سلام بر دوستان مهندسم .
آقا من به یه مشکل عجیب بر خوردم ... البته شایدم من اشتباه می کنم و یا راهش رو درست بلد نیستم . خوب تو وب سایت که مشکلی با مسیر فایل ها نداشتم و با آدرس دهی نسبی می تونستم فایل های مورد نظرم رو بخونم . ولی خوب الان مسئله ای که هست اینه که :
من تو وب سرویسم متدی نوشتم که قراره از یه فایل text‌ یه خطی رو بخونه و اون فایل هم داخل پوشه myfolder داره ...
الان من متد زیر رو برا خوندن از فایل نوشتم :


using (StreamReader sr = File.OpenText(@"..\myfolder\UserPass.txt"))
{


while (!sr.EndOfStream)
strdec = strdec + sr.ReadLine();

}


ولی خوب اتفاق جالبی که داره می افته اینه که موقع فراخوانی متدم با این خطا مواجه میشم :


Server was unable to process request. ---> Could not find a part of the path 'c:\windows\system32\myfolder\UserPass.txt'.

من موندم که چرا داره از این مسیر می خونه و طبیعتا این خطا رو می ده ؟
پیشاپیش از توجه دوستان ممنونم...

leila_mahyanet
سه شنبه 11 آبان 1389, 09:43 صبح
مسیرت رو داخل ()Server.MapPath قرار بده .


("مسیر دلخواه")Server.MapPath

L_eskandary
سه شنبه 11 آبان 1389, 09:55 صبح
مسیرت رو داخل ()Server.MapPath قرار بده .


("مسیر دلخواه")Server.MapPath



کد رو تغییر دادم :


using (StreamReader sr = File.OpenText(Server.MapPath(@"..\myfolder\UserPass.txt")))
{


while (!sr.EndOfStream)
strdec = strdec + sr.ReadLine();

}

با این کار خطای زیر رو میده :


System.Web.HttpException: Cannot use a leading .. to exit above the top directory.

leila_mahyanet
سه شنبه 11 آبان 1389, 10:31 صبح
به نظر میاد ارورش اینجوری حل بشه :


Server.MapPath(@"~/myfolder/UserPass.txt")

L_eskandary
سه شنبه 11 آبان 1389, 10:47 صبح
البته به این شکل حل شد :


using (StreamReader sr = File.OpenText(Server.MapPath(@"myfolder\UserPass.txt")))
{


while (!sr.EndOfStream)
strdec = strdec + sr.ReadLine();

}

mehdi.mousavi
سه شنبه 11 آبان 1389, 11:15 صبح
البته به این شکل حل شد :



while (!sr.EndOfStream)
strdec = strdec + sr.ReadLine();


سلام.
آیا دلیلی داره که فایل رو خط به خط می خونید؟ اگر قرار هستش محتویات کل فایل رو در strdec بریزید، خوب بهتره بدین شکل عمل کنید:


strdec = sr.ReadToEnd();

موفق باشید.