PDA

View Full Version : تغییرات در سطح دسترسی به یک فایل



omid_Ahmadi
دوشنبه 17 مرداد 1384, 13:21 عصر
در یک برنامه میخواهم به جز یک فایل aspx در یکی از فولدرها که مربوط به مدیریت هست بقیه از روش تعیین هویت پیش فرض استفاده کنند.
وقتی از تگ <location> در فایل web.config اصلی برنامه برای تغییر نوع تعیین هویت فایل به Forms استفاده میکنم موقعی که میخوام فایل رو باز کنم error میده که این فایل تحت IIS به عنوان یک برنامه تعیین نشده است.
چرا؟ ویا راه حل دیگری هم برای این کار هست؟
البته من یک فایل web.config دیگه برای فولدری که فایل management هست قرار دادم و تگ <authentication> رو دوباره نوشتم ولی باز هم همون error قبلی رو میداد.

omid_Ahmadi
شنبه 22 مرداد 1384, 15:33 عصر
یعنی هیچ کس هیچ راه حلی برای این کار نداره؟

Behrouz_Rad
شنبه 22 مرداد 1384, 23:13 عصر
کار پیچیده ای نیست!
حتی می تونید هر 3 نوع عمل تصدیق هویت رو در یک پروژه اعمال کنید.
این عمل به راحتی در سکشن System.Web انجام پذیره.
به عنوان یک قانون، زمانی که از انواع مختلف حالات تصدیق هویت در یک پروژه استفاده می کنید، باید فایل ها را بر اساس نوع حالت تصدیق هویت دسته بندی کرده و در پوشه های مجزا قرار دهید.
سپس، بر روی آن زیر پوشه، یک پوشه مجازی ایجاد کنید.
خطایی که رخ می دهد، ناشی از عدم ایجاد پوشه مجازی بر روی زیر پوشه ی قرار گرفته شده در پوشه ی اصلی است.
پس از ایجاد پوشه مجازی، در صورت اجرای پروژه، خطای Could not load type 'myProject.myWebForm' گرفته خواهد شد.
به منظور رفع این مشکل، در فرمی که در زیر پوشه قرار دارد، در دایرکتیو Page، خاصیت Codebehind را به Src تغییر نام داده و عبارت نوشته شده در جلوی خاصیت Inherits را از:


Inherits="myProject.myWebForm"

به:


Inherits="myWebForm"

تغییر دهید.

موفق باشید.

omid_Ahmadi
دوشنبه 24 مرداد 1384, 21:37 عصر
من یک فایل web.config برای فولدری که میخواهم تعیین هویت فایل مدیریت اون رو تغییر بدم ایجاد کردم و فولدر مربوطه رو هم در IIS به یک Web Application تغییر دادم. چون میخواستم در فولدر مربوطه فقط فایل بخش مدیریت دارای تعیین هویت باشند کد زیر رو به فایل web.config اضافه کردم:



<location path="Management.aspx">
<system.web>
<authentication mode="Forms">
<forms loginUrl="AdminSectionLogin.aspx">
<credentials passwordFormat="SHA1">
<user name="ahmadi" password="40BD001563085FC35165329EA1FF5C5ECBDBBEEF"/>
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>


ولی موقع اجرا با error زیر مواجه میشدم:



Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Source Error:

Line 101: <location path="Management.aspx">
Line 102: <system.web>
Line 103: <authentication mode="Forms">
Line 104: <forms loginUrl="AdminSectionLogin.aspx">
Line 105: <credentials passwordFormat="SHA1">

Source File: c:\inetpub\wwwroot\MyApp\Support\web.config Line: 103



وقتی قسمت تعیین هویت اصلی فایل web.config رو پاک میکنم و به جای اون از کدی که در بالا گفتم استفاده میکنم Error زیر در browser نمایش داده میشه:



Parser Error Message: The virtual path '/MyApp/UserControls/ButtomSection.ascx' maps to another application, which is not allowed.
Source Error:

Line 1: <%@ Register TagPrefix="MyApp" TagName="ButtomSection" Src="../UserControls/ButtomSection.ascx" %>
Line 2: <%@ Register TagPrefix="MyApp" TagName="MenuSection" Src="../UserControls/MenuSection.ascx" %>
Line 3: <%@ Register TagPrefix="MyApp" TagName="TopSection" Src="../UserControls/TopSection.ascx" %>

Source File: c:\inetpub\wwwroot\MyApp\Support\AdminSectionLogin .aspx Line: 1



(من از 3 تا UserControlدر برنامه استفاده کردم که در یک فولدر مجزا در برنامه اصلی قرار دارند)

متشکرم

Behrouz_Rad
دوشنبه 24 مرداد 1384, 22:19 عصر
1) احتمالا اگر نحوه ایجاد پوشه مجازی رو بلد باشی! باید نحوه معرفی کردن یک پوشه به عنوان یک Application رو هم بلد باشی!
بر روی اون زیر پوشه راست کلیک کن و از منویی که ظاهر میشه، گزینه ی Properties رو انتخاب کن.
حال بر روی دکمه Create Application و سپس OK کلیک کن.

2) مسلما خطایی که از مجاز نبودن مسیر حکایت می کنه، صحیح هست.
اگر با Dos کار کرده باشی، می دونی که در دستور CD که برای ورود به یک مسیر به کار میره، مفهوم کاراکتر .. رفتن به یک مرحله بالاتر هست و این مفهوم دقیقا در دات نت هم وجود داره.
هر Web App ای تنها اجازه دسترسی به محتویات خودش رو داره نه محتویات پدرش.
کاراکترهای /.. رو بردار.

موفق باشید.