PDA

View Full Version : سوال: تنظیمات web.config



mahak_f
سه شنبه 12 بهمن 1389, 09:27 صبح
سلام
با توجه به مطالبی که در سایت درباره تنظیم webconfig درباره کنترل سطح دسترسیها خوندم، webconfig سایتم رو اینجور نوشتم:

<authentication mode="Forms">
<forms loginUrl="FarsiEdition/login.aspx" defaultUrl="FarsiEdition/Default.aspx" timeout="20"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>

دسترسی به تمام صفحه های سایت آزادن بجز صفحه هایی که در فولدری با نام Mangment قرار دارن. و مخصوص مدیر سایت هست. صفحه لاگین رو تو فولدر صفحه های آزاد گذاشتم و برای تمامی فولدرها به تفکیک در webconfig کد زیر رو گذاشتم:

<location path="FarsiEdition">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>

میخوام که صفحه اصلی سایت در هر بار درخواست کاربر Default.aspx که در فولدر آزاد FarsiEdition قرار داره باشه و فقط در صورت درخواست صفحه های مدیریتی به صفحه لاگین هدایت شه. در ضمن با کلیک راست روی صفحه Default.aspx از لیست Solution Explorer گزینه Set as start page رو هم انتخاب کردم.
در حالت local یعنی روی کامپیوتر خودم درست انجام میشه، اما بعد از publish وقتی سایت رو تست میکنم به عنوان اولین صفحه لاگین رو باز میکنه در صورتیکه توقع دارم تنها در صورت درخواست صفحه های مدیریتی به لاگین بره.
لطفا منو تصحیح کنید....
پ.ن: لاگین و چک کردن یوزر و پسورد از طریق اتصال به بانک انجام میشه

b.paseban
سه شنبه 12 بهمن 1389, 12:59 عصر
سلام دوست عزیز.
شما توی فلدر Admin یه وب کانفیگ بزار و بعدش فقط این تگ رو توی اون اضافه کن:



<authorization>
<deny users="?"/>
</authorization>

این یعنی کاربرانی که هویت آنها معلوم نیست نمی توانند به این فلدر دست پیدا کنند

حال توی وب کانفیگ اصلی سایتت:



<authentication mode="Forms">
<forms defaultUrl="~/Index.aspx"
loginUrl="~/Login.aspx"
timeout="360"
></forms>
</authentication>

حالا در صورت دسترسی غیر مجاز به صفحه Login.aspx میره و صفحه اصلی سایت Index.aspx هست.

مهدی کرامتی
سه شنبه 12 بهمن 1389, 14:18 عصر
احتمال داره Master Page مورد استفاده صفحه اصلی در فولدر مورد حفاظت قرار داشته باشه. اگر یکی از آبجکت های استفاده شده در صفحات آزاد در فولدرهای حفاظت شده قرار داشته باشه مشکل مشابه پیش خواهد آمد.

mahak_f
سه شنبه 12 بهمن 1389, 15:25 عصر
سلام دوست عزیز.
شما توی فلدر Admin یه وب کانفیگ بزار و بعدش فقط این تگ رو توی اون اضافه کن:



<authorization>
<deny users="?"/>
</authorization>

این یعنی کاربرانی که هویت آنها معلوم نیست نمی توانند به این فلدر دست پیدا کنند

حال توی وب کانفیگ اصلی سایتت:



<authentication mode="Forms">
<forms defaultUrl="~/Index.aspx"
loginUrl="~/Login.aspx"
timeout="360"
></forms>
</authentication>

حالا در صورت دسترسی غیر مجاز به صفحه Login.aspx میره و صفحه اصلی سایت Index.aspx هست.



دوست عزیز طبق گفتتون در فلدر مدیریت یه کانفیگ با محتویاتی که نوشتی گذاشتم. اما باز هم فقط در حالت لوکال سناریو درست کار میکنه. بعد از پالیش کردن سایت، اولین صفحه لاگین میشه و برای ورود یوزر و پسورد میخواد. در صورتیکه تمام صفحات سایت من آزاد هستن بجز صفحه مدیریت سایت!!!
تازه بعد از وارد کردن نام کاربری و پسورد یه صفحه Directory Listing -- / میاد که اسم فولدرهای سایتم رو نشون میده و میخواد که تعیین کنم وارد چه فولدری بشم. :گریه:
چکارش کنم؟؟؟؟

mahak_f
سه شنبه 12 بهمن 1389, 15:31 عصر
احتمال داره Master Page مورد استفاده صفحه اصلی در فولدر مورد حفاظت قرار داشته باشه. اگر یکی از آبجکت های استفاده شده در صفحات آزاد در فولدرهای حفاظت شده قرار داشته باشه مشکل مشابه پیش خواهد آمد.

دوست عزیز فولدر مسترپیج ها رو تو وب کانفیگ به عنوان دسترسی آزاد با کد زیر معرفی کردم:

<location path="Layouts">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>

در ضمن تمام صفحات سایت در فولدرهای مربوطه دسته بندی و ساخته شدن. فقط حالا که اینو مطرح میکنید باید بگم فقط یه صفحه Web.sitemap برای تهیه نقشه سایت در رووت ساختم. اما بعد از راهنمایی شما اونو هم پاک کردم ولی مشکل همچنان پابرجاست. یعنی بعد از پابلیش سایت اولین صفحه لاگین هست در صورتیکه تمام صفحه های سایت بجز بخش مدیریت آزاد هستن

مهدی کرامتی
سه شنبه 12 بهمن 1389, 15:58 عصر
صفحه Index.aspx جزو Default Document های پیش فرض IIS نیست، مگر اینکه دستی تنظیمش کرده باشید. یک صفحه به نام Default.aspx در Root سایت اضافه کنید.

mahak_f
سه شنبه 12 بهمن 1389, 16:16 عصر
صفحه Index.aspx جزو Default Document های پیش فرض IIS نیست، مگر اینکه دستی تنظیمش کرده باشید. یک صفحه به نام Default.aspx در Root سایت اضافه کنید.

معذرت میخوام اما منظورتون رو نمیفهمم
تو سایتم من 3 تا فولدر کلی برای تقسم بندی صفحه ها دارم. 1- صفحه های فارسی، 2- صفحه های انگلیسی، 3- صفحه های مدیر سایت. که 2 تا فولدر اول دسترسی آزاد باید داشته باشن. صفحه ای هم که برای کاربران باید به عنوان پیش فرض باز شه درون فولدر صفحه های فارسی با نام Default.aspx تعریف کردم. هم با کلیک راست روی صفحه و انتخاب گزینه Set as start page. و هم در وب کانفیگ اصلی.
حالا پیشنهاد شما اینه که صفحه اصلی رو توی روت بسازم؟
ببخشید باز تکرار میکنم، اما من هنوز سایتو آپلود نکردم چون بعد از پابلیش کردن وقتی برنامه پابلیش شده رو اجرا میکنم اولین صفحه لاگین باز میشه که قاعدتا باید وقت درخواست صفحات فولدر مدیریت باز شه!

مهدی کرامتی
سه شنبه 12 بهمن 1389, 16:29 عصر
اگر منظورت از تنظیم کردن صفحه اصلی سایت در Web.Config مقدار دادن به مشخصه defaultUrl بوده منظور شما برآورده نمیشه، چون مقداری که به پارامتر فوق داده میشه پس از لاگین استفاده خواهد شد.

اگر می خواهی در Web.Config صفحه اصلی سایت رو روی صفحه خاصی قرار دهی تنظیمات زیر را به Web.Config (زیر بخش system.web اضافه کن):

<configuration>
<system.webServer>
<defaultDocument enabled="true">
<files>
<add value="index.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
مهم: روش فوق از IIS 7 به بعد کار میکنه.

mahak_f
سه شنبه 12 بهمن 1389, 19:22 عصر
اگر منظورت از تنظیم کردن صفحه اصلی سایت در Web.Config مقدار دادن به مشخصه defaultUrl بوده منظور شما برآورده نمیشه، چون مقداری که به پارامتر فوق داده میشه پس از لاگین استفاده خواهد شد.

اگر می خواهی در Web.Config صفحه اصلی سایت رو روی صفحه خاصی قرار دهی تنظیمات زیر را به Web.Config (زیر بخش system.web اضافه کن):

<configuration>
<system.webServer>
<defaultDocument enabled="true">
<files>
<add value="index.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
مهم: روش فوق از IIS 7 به بعد کار میکنه.

اول از همه مرسی از توجهتون
کدی که دادین رو به وب کانفیگ اصلی اضافه کردم. و defultUrl رو هم پاک کردم. به این صورت شد:


<configuration>

<system.webServer>
<defaultDocument enabled="true">
<files>
<add value="FarsiEdition/Default.aspx" />
</files>
</defaultDocument>
</system.webServer>

<system.web>
<compilation debug="true" targetFramework="4.0" />


<authentication mode="Forms">
<forms loginUrl="FarsiEdition/login.aspx" timeout="20"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>

همچنان در حالت لوکال درست کار میکنه. صفحه اصلی Default.aspx هست و در صورت درخواست صفحه های مدیریتی به صفحه لاگین منتقل میشه.
اما اینبار بعد از پابلیش سایت دیگه در اولین درخواست لاگین باز نمیشه و میره به همون صفحه ای که Directory/ اسمش هست و فولدرهای برنامه منو نشون میده و میخواد که انتخاب کنم وارد کدوم فولدر شه.
چرا اینجوریه؟ :گریه:
یعنی سناریویی که مطرح کردم انقدر خاصه؟ :متعجب:

مهدی کرامتی
سه شنبه 12 بهمن 1389, 19:28 عصر
کاری که کردید اشتباه است:

<add value="FarsiEdition/Default.aspx" />
مواردی که در تنظیمات Default Document ذکر می شوند فقط می تواند حاوی نام فایل باشد، نه مسیر آن، مثال:


<add value="Default.aspx" />
همچنین بهتر است در Root سایت شما یک فایل Default.aspx وجود داشته باشد و هدایت کاربر به صفحه FarsiEdition/Default.aspx را در Code Behind آن توسط دستوری مانند

Response.Redirect("~/FarsiEdition/Default.aspx")
انجام دهید.

mahak_f
سه شنبه 12 بهمن 1389, 19:46 عصر
تمام کارایی که گفتین رو انجام دادم، صفحه Default روی روت ساختم، کد وب کانفیگ رو عوض کردم....
نشد. متاسفانه مشکل همچنان پابرجاست!!

مهدی کرامتی
سه شنبه 12 بهمن 1389, 20:43 عصر
پروژه ات رو روی IIS به صورت لوکال اجرا کن و ببین مشکل از کجاست.

IIS رو روی ویندوزت نصب کن، در ویژوال استودیو روی پروژه رایت کلیک کن و Properties رو انتخاب کن. سپس در تب Web ، وب سرور مورد استفاده برای پروژه را روی IIS قرار بده و روی دکمه Create Virtual Directory کلیک کن. پروژه رو ببند و دوباره باز کن. اگر همه کارها درست انجام شده باشه پروژه روی IIS بالا میاد و می توانی جریان کار را روی یک سرور واقعی بررسی کنی.
Visual Studio Web Server که به صورت پیش فرض برای اجرای پروژه های ASP.NET استفاده می شود بسیاری از مشخصات IIS را ندارد و محدودیت ها و خواص آن را نشان نمی دهد.

k1csharpdeveloper
سه شنبه 01 شهریور 1390, 22:43 عصر
با سلام خیلی فوری درباره خطای وب کانفیگ رو هاست


من یک وب اپلیکیشن دارم که روی هاست گذاشته بودم اینسری یک چند تایی فایلهای gif رو صفحات قرار دادم و پابلیش ساختم و روی هاست گذاشتم ولی متاسفانه سایت که بالا میاد و ورود رو میزنم به صفحه لاگین هدایتم نمیکنه و منو به error page میبره و وقتی هم از تو وب کانفیگ off کردم خطاها رو تا ببینم مشکل چیه یه همچین خطایی گرفتم در ضمن روی سیستم خودم از سورس وهم از پابلیش از iis هیچ مشکلی ندارم
could not load file or assembly web.flash.c1
میشه کمکم کنید آبروم در خطره پیش مشتری و رئیس شرکت:افسرده: