PDA

View Full Version : Custom Errors و درخواست های غیر از aspx



dorparasti
چهارشنبه 28 دی 1390, 11:12 صبح
من تا الان فرضم بر این بود که با تنظیم کردن Custom Errors در وب کانفیگ تمام درخواست ها اعم از aspx یا html یا حتی تصاویر و سایر فایل ها در صورت بروز خطا مثلا 404 یا 403 طبق تنظیمات این بخش عمل می کنن . اما امروز متوجه شدم که تنها فایل های خود دات نت طبق این روال عمل می کنن و کاربر به صفحه ای که من تعیین کردم هدایت میشه اما سایر درخواستها توسط خود IIS کنترل میشن و همون صفحه پیش فرض خودش رو نشون می ده .

این اصلن جالب نیست . راه حل چیه ؟

hamid_shrk
چهارشنبه 28 دی 1390, 11:15 صبح
مثلا چه خطایی بوده که به صفحات شما هداین نشده؟
منظورتون رو متوجه نشدم اصلا.
با مثال مطرح کنید

dorparasti
چهارشنبه 28 دی 1390, 11:31 صبح
اگر من صفحه ای رو که وجود نداره درخواست کنم مثلاً samplepage.aspx چون پسوند aspx داره طبق روال custom errors به صفحه 404.htm که من تعیین کردم منتقل میشه .
اما اگر من یک صفحه html رو که وجود نداره یا یک تصویر که وجود نداره رو درخواست کنم دیگه به صفحه 404 خودم منتقل نمی شم . یعنی IIS دیگه درخواست من رو به موتور ASp.Net تحویل نمی ده و خودش اونرو هندل می کنه و صفحه پیش فرض خودش رو نشون می ده .
توی وب خوندم که باید تنظیمات IIS رو دستکاری کرد تا این فایل ها رو هم به .net تحویل بده تا توسط اون هندل بشن . اما می خوام بدونم روش دیگه ای هم هست که بتونم این کار رو انجام بدم یا نه .

hamid_shrk
چهارشنبه 28 دی 1390, 11:35 صبح
به این سایت سر بزن :
http://www.irkaspersky.com/
جلوش هر آدرسی رو که دوست داری با پسوند html یا هر عکسی رو بزن باز هم خطای 404 میده.
تو وب کانفیگش تنظبم کردم منم.
در ضمن تو خود IIs هم میشه تنظیم کرد که فرقی نداره!

dorparasti
چهارشنبه 28 دی 1390, 11:58 صبح
جالب بود
نمی دونم چرا این کار نمی کنه پس . به جز تعیین Custom Errors کار دیگه ای هم انجام دادین یا نه ؟

hamid_shrk
چهارشنبه 28 دی 1390, 12:00 عصر
جالب بود
نمی دونم چرا این کار نمی کنه پس . به جز تعیین Custom Errors کار دیگه ای هم انجام دادین یا نه ؟
خیر کار دیگه ای نکردم.
----
اینکار رو با خود IIS انجام بده ببین نتیجش چی میشه اما نباید فرقی داشته باشه
شما کدتون یا آدرس سایتتون رو بذارید.

dorparasti
چهارشنبه 28 دی 1390, 12:05 عصر
آدرس سایت http://hormozgan-ts.ir
اینرو که وارد کنید به http://hormozgan-ts.ir/fa/ منتقل میشید که چون وجود نداره باید صفحه 404 من رو نشون بده که نمی ده .

حالا این رو درخواست کنید http://hormozgan-ts.ir/aboute.aspx که بازم وجود نداره اما صفحه 404 من رو نشون می ده .

کد کانفیگ هم اینه :

<customErrors mode="On" defaultRedirect="Error/General.htm" >
<error statusCode="403" redirect="Error/403.htm" />
<error statusCode="404" redirect="Error/404.htm" />
</customErrors>

hamid_shrk
چهارشنبه 28 دی 1390, 12:12 عصر
فکر میکنم اگه با خود IIS هم خطاهای 404 رو مدیریت کنید جلوی اینها رو هم میگیره.
حتما امتحان کنید

dorparasti
چهارشنبه 28 دی 1390, 12:27 عصر
host شما چیه ؟
احتمالش هست که IIS سرور شما طوری تنظیم شده باشه که همه درخواستها رو به .NET بده ؟

mehdi.mousavi
چهارشنبه 28 دی 1390, 12:27 عصر
سلام.
از اونجاییکه از IIS7 استفاده می کنید، المنت httpErrors (http://www.iis.net/ConfigReference/system.webServer/httpErrors) رو می تونید در web.config برنامه تنظیم کنید.
در نسخه های قدیمی تر IIS، این کارها رو میشد با HttpHandler انجام داد (فرضا برای انجام اینکار در مورد تصاویر، این مقاله (http://www.wrox.com/WileyCDA/Section/id-291916.html) از Hanselman رو بخونید).

موفق باشید.

@hamid_shrk: شما در web.config اتون، المنت system.webServer دارید (و در نتیجه httpErrors)؟

hamid_shrk
چهارشنبه 28 دی 1390, 12:32 عصر
شما در web.config اتون، المنت system.webServer دارید (و در نتیجه httpErrors)؟

بله درسته ، وهمچنین بنده ام از IIS7 استفاده میکنم

fakhravari
چهارشنبه 28 دی 1390, 16:49 عصر
<customErrors defaultRedirect="~/Error/Error.htm" mode="Off">
<error statusCode="500" redirect="~/Error/Error.htm" />
<error statusCode="404" redirect="~/Error/FileNotFound.htm" />
<error statusCode="403" redirect="~/Error/Forbidden.htm" />
<error statusCode="400" redirect="~/Error/400 Bad Request.htm" />
<error statusCode="401" redirect="~/Error/401 Unauthorized Error Resolution.htm" />

</customErrors>