مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

moonfa1392

عضویت از 1394/08/17

حذف کردن پسوند aspx از صفحات

  • شنبه 2 بهمن 1395
  • 13:11
تشکر میکنم

سلام

من کد زیر رو در web.config قرار دادم که درواقع صفحات هم با aspx هم بدون پسوند aspx باز میشن:

<system.webServer>
    <rewrite>
      <rules>
        <rule name="RewriteASPX">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="{R:1}.aspx" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

میخوام کاری کنم که وقتی صفحه رو با aspx باز میکنیم خودکار اون aspx رو حذف کنه آیا راهی داره؟

و یک سوال دیگر اینکه اگر برای سایت اصلا از membership استفاده نکنم و هیچ کد لاگین و ثبت نام ننویسم و برای پوشه پنل از داخل هاست Password-Protected Directories بذارم امنیت سایت پایین میاد؟ آیا این روش اصلا صحیح هست یا نه؟

پاسخ های این پرسش

تعداد پاسخ ها : 34 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 13:14

این روش منسوخ شده از FRouting استفاده کنید

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • شنبه 2 بهمن 1395
  • 13:21

توی برنامه نویسان مقاله دربارش نیست استاد؟

آخه سرچ زدم نتیجه ای پیدا نکردم

توی موتور جستجوگر هم سرچ زدم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 13:24

به تداد زیاد هست

Url Routing در Asp.Net

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • شنبه 2 بهمن 1395
  • 13:26

خیلی ممنون 

ممکنه درباره سوال دومم یک توضیح مختصر بدین؟

این سوال بخاطر این اومد توی ذهنم که دیدم یکی از دوستانم تمام سایت هایی که نوشته بدون لاگین هستن فقط از داخل هاست به پنلشون رمز داده! خواستم بدونم وقتی سایت ما 1 ادمین بیشتر نداره دلیل اینکه از لاگین استفاده کنیم چیه؟ اگه از توی هاست رمز بذاریم امنیت کم میشه یا ...

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 13:44

بدون لاگین چگونه ادمین وارد سیستم بشه ؟

اون برای ورود به پنل هاست هست نه سایت

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • شنبه 2 بهمن 1395
  • 13:52

درواقع اصلا لاگین نمیکنه استاد

تمام صفحات مربوط به مدیریت مثلا داخل پوشه admin باشه بعد برای پوشه admin از داخل هاست یوزر بسازیم که هر صفحه ای داخل این پوشه بخواد باز بشه باید یوزر و پسورد وارد بشه!

البته درسته که لاگین مزایای خودشو داره ip میشه بگیری تاریخ هارو میشه ذخیره کنی اخرین ورود و خروج و خیلی چیزای دیگه اما برای امنیتش میپرسم که اون روش امنیتش خوب هست یا نه؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 13:53

بله میشه

ولی کاربر برای هر صفحه باید نام کاربری و کلمه عبور را بزنه

از نظر من منطقی نیست

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • شنبه 2 بهمن 1395
  • 14:20

بله درسته

دستتون درد نکنه لطف کردین

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 04:52

استاد من طبق مقاله ای که دادید عمل کردم

محتوای Global.asax.cs به صورت زیر:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;

namespace ExampleUrlRouting
{
    public class Global : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Parameters", "Name/{Name}/", "~/default.aspx");

        }
        protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            var persianCulture = new GSD.Globalization.PersianCulture();
            System.Threading.Thread.CurrentThread.CurrentCulture = persianCulture;
            System.Threading.Thread.CurrentThread.CurrentUICulture = persianCulture;
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

دقیقا مثل خودتون برای تست توی صفحه default.aspx کد زیر رو قرار دادم:

<fieldset style="width: 300px">
<legend>www.Barnamenevisan.org</legend>
  
<asp:Label ID="Label1" runat="server" Text="پارامتر ارسال شده : "></asp:Label>
    
<asp:Label ID="Label2" runat="server" ForeColor="Red" Text="Label"></asp:Label>
</fieldset>

در Page_Load صفحه هم کد زیر رو قرار دادم:

if (Page.RouteData.Values["Name"] != null)
        {
            Label2.Text = Page.RouteData.Values["Name"].ToString();
        }

کد زیر رو هم که در web.config قرار داده بودم فرمودید منسوخ شده به کلی حذفش کردم:

<system.webServer>
    <rewrite>
      <rules>
        <rule name="RewriteASPX">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="{R:1}.aspx" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

فایل 

قاعدتا باید آدرس زیر رو باز کنه اما باز نمیکنه :

http://localhost:44664/Name/Label

صفحه فقط با آدرس http://localhost:44664/default.aspx باز میشه :(

مشکل از کجاست؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 08:46

صفحات با آدرس قبلی در دسترس خواهند بود و کسی از آدرس اونها اطلاع نداره

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 08:48

یعنی چی استاد اصلا متوجه منظورتون نشدم؟
من کلا فقط میخوام aspx رو از آخر آدرس ها حذف کنم!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 08:51

حذف شده

شما با آدرس جدید صدا بزنید در دسترس خواهد بود

نمیتونید که کلا صفحات را حذف کنید مبحث Rout برای مجازی سازی Url ها هست

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 10:50

خب استاد مگه آدرس جدید الان نباید این باشه:

http://localhost:44664/Name/Label

من میزنم باز نمیکنه!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 10:53

چه خطایی میده ؟

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 10:55

صفحه رو پیدا نمیکنه!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 11:04

کد ها درست هست

با نمونه مقاله مقایسه کنید شاید جایی اشتباه کرده باشید

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 11:57

بله استاد درست شد الان باز میشه

اما من گیج شدم درواقع توی نوار آدرس به جای label هر چیزی میزنم باز میشه!

انگار هر پارامتری وارد بشه باز میکنه صفحه رو 

چکار کنم که مثلا فقط با پارامتر default باز کنه؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 11:59

به شکل زیر قرار دهید فثقط با این ادرس باز میکنه

routes.MapPageRoute("Parameters", "Name/Lable/", "~/default.aspx");

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 12:02

قرار دادم استاد هنوز هم با هر پارامتری که بزنم باز میکنه!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 12:06

کد را قرار  دهید

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 12:10
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;

namespace ExampleUrlRouting
{
    public class Global : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Parameters", "Name/Lable/", "~/default.aspx");

        }
        protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 12:19
کد ها درسته الان باید فقط با ادرس /name/lable در دسترس باشه
کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 12:33

استاد از اون مشکلاتی که بعید میدونم تاحالا برای کسی پیش اومده باشه :))

شما ببینید من کلا کامنت کردم اون بخش رو:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;

namespace ExampleUrlRouting
{
    public class Global : System.Web.HttpApplication
    {
        //public static void RegisterRoutes(RouteCollection routes)
        //{
        //    routes.MapPageRoute("Parameters", "Name/Lable/", "~/default.aspx");

        //}
        protected void Application_Start(object sender, EventArgs e)
        {
            //RegisterRoutes(RouteTable.Routes);
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

با این حال داره با تمام پارامتر ها باز میکنه ....

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 12:35

یکبار روی Solution کلیک راست کنید و Clean را بزنید و بعد rebuild

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 12:42

گزینه Clean نبود فقط گزینه Rebuild Solution بود زدم به این صورت:

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 12:46

ای وای این چرا WebSite ؟

چرا WebApplication نیست ؟

سن من به این نوع پروزه قد نمیده

خیلی وقته از این نوع پروزه ها استفاده نکردم یادم رفته

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 12:57

یا خدا نکنه تمام مشکلات درج تاریخ و این آدرس دهی و لاگین و خلاصه همش مال همینه surprise

من تابحال اصلا WebApplication باز نکردما استاد هرچی سایت هم نوشتم با WebSite بوده 

فرقشون چیه این دوتا؟ 

الان من WebApplication باز کنم کار باهاش یا اینکه طریقه کدنویسی و اینا تفاوت داره یا مثل همینه؟ 

هنگ کردم با این حرفتون!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 13:02

پروژه Web Site در ASP.Net

در این حالت هر صفحه برای خودش به صورت جداگانه کامپایل میشه و در آخر برای هر فایل ممکن است چندین DLL وابسته داشته باشید. حتی ممکنه یک DLL ثابت شامل کلاس های اصلی پروژه رو برای هر فایل ایجاد کنه که در نهایت باعث کلی خطا میشه. به خاطر اینکه این نوع پروژه چندان مناسب برنامه نویس ها نبود بعد از ارائه در Visual Studio 2005 کم کم کنار گذاشته شد.

البته در صورتی که قصد دارید که یک پوشه رو به عنوان یک پروژه مستقل باز کنید این گزینه برای شما مناسب تره. در صورتی هم که قصد دارید به هر صفحه به صورت مستقل از کل سایت برخورد بشه و هر صفحه مستقلاً کامپایل بشه این گزینه برای شما مناسب است.
پروژه Web Application در ASP.Net

این نوع پروژه اول به صورت Addon به VS اضافه شد بود و حالا به خاطر مزایاش به بخشی از VS تبدیل شده. تفاوت اصلی Web Application با Web Site در ویژال استودیو اینه که Web Application در هنگام کامپایل به یک فایل DLL یکپارچه شامل تمام توابع و اجزای سایت تبدیل میشه. این کار خطایابی رو راحت و پیگیری تغییرات در پروژه رو منظم تر میکنه.

در صورتی که شما پروژه بزرگی شامل چند زیرمجموعه(پروژه child) دارید این گزینه برای شما مناسب است. همینطور برای تبدیل پروژه های تحت وب نسخه های قدیمی VS به نسخه 2005 و بالاتر باید از Web Application استفاده کنید.

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 13:04

خب استاد من الان WebApplication باز کردم داخلش add new item اصلا webform نداره چطوری باید بسازم؟ 

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 13:07

عذر میخوام اشتباه از من بود WPFApplication  باز کرده بودم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 13:08

مگه میشه مگه داریم ؟

در 2013

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 13:16

بله درسته الان فقط با آدرس http://localhost:2210/name/lable باز میشه

اما من کد رو الان به این صورت تغییر دادم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;

namespace WebApplication1
{
    public class Global : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Parameters", "Name/Lable/", "~/default.aspx");
            routes.MapPageRoute("Parameters", "Name/Lable2/", "~/WebForm1.aspx");
        }
        protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
}

مگه نباید الان آدرس http://localhost:2210/name/lable2 صفحه WebForm1.aspx رو باز کنه؟ اما باز نمیکنه چرا؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 بهمن 1395
  • 13:21

نام ها نباید یکسان باشه

  routes.MapPageRoute("Parameters", "Name/Lable/", "~/default.aspx");
            routes.MapPageRoute("Parameters2", "Name/Lable2/", "~/WebForm1.aspx");

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • یکشنبه 3 بهمن 1395
  • 13:24

خیلی خیلی خیلی ممنونم 

فقط یک سوال دیگه اینکه نمیشه Name رو عوض کرد؟ مثلا آدرس به این صورت بشه http://localhost:2210/groups/lable

کد رو به این صورت کردم

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Parameters", "Group/Lable/", "~/default.aspx");
            routes.MapPageRoute("Parameters2", "Name/Lable2/", "~/WebForm1.aspx");
        }

اما باز هم url به این صورت فقط باز میشه http://localhost:2210/name/lable

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)