كيفية تحقيق أسماء الملفات صفحة ديناميكية في ASP.NET؟

StackOverflow https://stackoverflow.com/questions/462532

  •  19-08-2019
  •  | 
  •  

سؤال

وأود موقع الويب الخاص بي لإنشاء البحث الأمثل محرك صلات لالمحتوى الديناميكي (بدلا من تحديد البيانات عبر سلسلة استعلام مواقع المعلومات). وبالتالي:

mysite/SomeModifiableNname.aspx
بدلا من

mysite/DynamicContent.aspx?entryID=2345
.

وبصرف النظر عن 404 معالج الذكية التي تعيد توجيه طلبات، أو مخصص التمثيل الصامت نوع المعالج في IIS، هناك حل جيد لهذا في ASP.NET؟
مع الأخذ في الاعتبار أن اسم ملف الصفحة يجب أن يكون قادرا على تغييرها في وقت التشغيل.

هل كانت مفيدة؟

المحلول 4

وشكرا لأفكار الجميع. مع المعلومات المقدمة، جئت عبر ما اعتقد هو الحل أحتاج:

في Global.asax (أو عن طريق HttpModule)، والاستماع إلى الحدث BeginRequest وتطبيق مسار Context.Rewrite هناك:

void Application_BeginRequest(object sender, EventArgs e)
{
    string fullOrigionalpath = Request.Url.ToString();

    if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
    {
        Context.RewritePath("Default.aspx?id=Games");
    }

}

وبعد ذلك، على طريقة OnPreInit من الصفحة التي سوف تتعامل مع هذه الطلبات، إعادة كتابة مسار يحتاج إلى أن يطبق مرة أخرى بحيث إعادات النشر ستعمل بشكل مناسب:

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);

    if (Request.QueryString["id"] == null)
        return;
    if (Request.QueryString["id"].ToLower().Equals("games"))
        Context.RewritePath("Games", "", "id=Games");
}

والمفتاح الذي يجعل هذا العمل أفضل من الكثير من وحدات-إعادة كتابة URL جئت عبر هو أن مسارات يمكن أن تكون دينامية. وهذا هو، لا يمكن للعناوين التي تم إنشاؤها يكون المستندة إلى البيانات.

نصائح أخرى

ويمكنك استخدام rel على HttpHandler ، أو كما يرى <وأ href = "http://codebetter.com/blogs/jeffrey.palermo/archive/2005/08/10/130532.aspx" = "نوفولو noreferrer"> هنا .

وهذا هو موضوع واسع يشار إليها عموما URL إعادة كتابة ...

وهناك عدة طرق لتحقيق ذلك. أود أن أقترح النظر في وحدة إعادة كتابة IIS.

وربما يجب عليك أيضا التحقيق في capabalities URL التوجيه التي تم تطويرها لMVC وتتوفر في ASP.NET 3.51

وUPDATE: أتمنى لو أعرف المزيد عن نواياكم. هذه الجملة الأخيرة يخلط لي.

ولقد فعلت ذلك في الماضي مع UrlRewrite.Net. وهناك أيضا منشأة بنيت في هذا في IIS7

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top