ASP.NET में डिफॉल्ट पेज कैसे सेट करें?


127

क्या कोई खंड या कोड है जो हमें डिफ़ॉल्ट पेज को सेट करने की अनुमति देता है web.config?

उदाहरण के लिए, जब लोग पहली बार मेरी वेबसाइट पर आते हैं, तो मैं चाहता हूं कि वे CreateThing.aspxबजाय देखें Default.aspx

समाधान जो मुझे पहले से पता है:

  1. इस लाइन की कोड => Response.Redirect("CreateThings.aspx")को Default.aspx Page_Loadघटना में रखें लेकिन यह तरीका वास्तव में बहुत अच्छा है।

  2. हम IIS (डिफ़ॉल्ट पृष्ठ कॉन्फ़िगरेशन) का उपयोग कर सकते हैं, लेकिन मैं अपने ASP.NET अनुप्रयोग पर एक ही काम करना चाहता हूं।

  3. यह अब के लिए एक और समाधान हो सकता है:

    <defaultDocument>
        <files>
            <clear />
            <add value="Default.aspx" />
            <add value="Default.htm" />
            <add value="Default.asp" />
            <add value="index.htm" />
            <add value="index.html" />
            <add value="iisstart.htm" />
        </files>
    </defaultDocument>

जवाबों:


239

यदि आप IIS 7 या IIS 7.5 का उपयोग कर रहे हैं तो आप उपयोग कर सकते हैं

<system.webServer>
    <defaultDocument>
        <files>
            <clear />
            <add value="CreateThing.aspx" />
        </files>
    </defaultDocument>
</system.webServer>

https://docs.microsoft.com/en-us/iis/configuration/system.webServer/defaultDocument/


5
मैंने पाया कि मुझे defaultDocument टैग में सक्षम = "सत्य" विशेषता जोड़ने की आवश्यकता है: <defaultDocument सक्षम = "सत्य">
जॉन फर्ग्यूसन

इसके लिए @JohnFerguson चीयर्स।
निक

2
यह Web.config फ़ाइल के <कॉन्फ़िगरेशन> टैग में डाला जाना है।
मिकाएल मेयर

क्या यह काम करेगा यदि Default.aspx किसी अन्य फ़ोल्डर में है? उदाहरण के लिए: <add value = "/ NewSite / default.aspx" />
अपोलो

IIS8 के साथ भी काम करता है।
19 सितंबर को वुल्फर्शप

23

टिप # 84: क्या आप जानते हैं ... विज़ुअल वेब डेवलपर में अपनी वेब साइट के लिए एक प्रारंभ पृष्ठ कैसे सेट करें?

बस उस पृष्ठ पर राइट क्लिक करें जिसे आप प्रारंभ पृष्ठ बनाना चाहते हैं और कहें "प्रारंभ पृष्ठ के रूप में सेट करें"।

जैसा कि एडम तुलिपर - एमएसएफटी द्वारा नीचे टिप्पणी में कहा गया है, यह केवल डिबगिंग के लिए काम करता है, परिनियोजन नहीं।


1
हम्म। स्थानीय रूप से काम करता है, लेकिन बाद में जब मैं नीलाम करने के लिए तैनात नहीं हूं।
विवेक महाराज

स्वीकृत उत्तर मेरे काम नहीं आया, लेकिन यह किया! धन्यवाद!
९९

6
@vivekmaharajh यह डिफ़ॉल्ट नहीं था क्योंकि यह परीक्षण / डिबगिंग के लिए है - यह तकनीक आपके वेब सर्वर को केवल आपके विकास के वातावरण में कॉन्फ़िगर नहीं करती है।
एडम तुलिपर - एमएसएफटी

जब उपयोगकर्ता निर्देशिका को स्वयं एक्सेस करते हैं तो पुनर्निर्देशित करने में मदद नहीं करता है।
मैल्कम सल्वाडोर

9

HttpHandler मार्ग के रूप में मानचित्र default.aspx और HttpHandler के भीतर से CreateThings.aspx पर पुनर्निर्देशित करें।

<add verb="GET" path="default.aspx" type="RedirectHandler"/>

सुनिश्चित करें कि Default.aspx आपके एप्लिकेशन रूट पर भौतिक रूप से मौजूद नहीं है । यदि यह शारीरिक रूप से मौजूद है तो HttpHandler को निष्पादित करने का कोई मौका नहीं दिया जाएगा। भौतिक फ़ाइल HttpHandler मानचित्रण को ओवरराइड करती है।

इसके अलावा आप इसे default.aspx के अलावा अन्य पृष्ठों के लिए फिर से उपयोग कर सकते हैं।

<add verb="GET" path="index.aspx" type="RedirectHandler"/>

//RedirectHandler.cs आपके App_Code में

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for RedirectHandler
/// </summary>
public class RedirectHandler : IHttpHandler
{
    public RedirectHandler()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    #region IHttpHandler Members

    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        context.Response.Redirect("CreateThings.aspx");
        context.Response.End();
    }

    #endregion
}

तो, आप कहते हैं कि जब कोई अनुरोध होता है Default.aspx, तो हैंडलर अनुरोध को पुनर्निर्देशित करेगा CreateThing.aspx। यह एक सामान्य समाधान दिखता है। धन्यवाद।
तारिक

लेकिन क्या इससे HttpHandler प्रदूषण होगा?
तारिक

आपके संपादन के बाद, मुझे यह कहने की आवश्यकता है: खैर यह हो सकता है। मुझे लगता है कि साधारण सी बात होगी Application.Run(new Form()1):)
तारिक

@ एरॉन: आप हमेशा एक कस्टम कॉन्फ़िगरेशन अनुभाग बना सकते हैं जो आपके HttpHandlerविभिन्न विभिन्न अनुरोधों के लिए कॉन्फ़िगर करेगा । आप सभी * .aspx अनुरोधों को भी पकड़ सकते हैं और देख सकते हैं कि अनुरोध आपके किसी कॉन्फ़िगर किए गए URL से मेल खाता है या नहीं। नहीं तो अभी से गुजर जाओ।
रॉबर्ट कोरिटनिक

4

यदि आप प्रपत्र प्रमाणीकरण का उपयोग कर रहे हैं, तो आप नीचे दिए गए कोड को आज़मा सकते हैं:

<authentication mode="Forms">
<forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/"> 
</forms>
</authentication>

प्रपत्र प्रमाणीकरण का उपयोग करने के लिए, क्या मुझे प्रदाताओं की सदस्यता या सामान का उपयोग करना चाहिए? मेरा मतलब है जब मैं विंडोज के बजाय फॉर्म के रूप में प्रमाणीकरण मोड का चयन करता हूं, तो यह कोड आकर्षक रूप से सही काम करेगा?
तारिक

मैं कहूंगा कि यह समाधान पर निर्भर करता है। यदि आपको अलग-अलग उपयोगकर्ता प्रोफाइल के साथ अधिक जटिल समाधान की आवश्यकता है तो आपको सदस्यताप्रोवाइडर्स के साथ जाना चाहिए। लेकिन अगर यह अधिक सरल सेटअप है, तो आप केवल <= उपयोगकर्ताओं को अनुमति दें "" /> और <उपयोगकर्ताओं को अस्वीकार कर सकते हैं = "" />।
Zooking

3

यदि आप अपनी वेबसाइट में लॉगिन पेज का उपयोग कर रहे हैं तो web.config फ़ाइल पर जाएं

<authentication mode="Forms">
  <forms loginUrl="login.aspx" defaultUrl="index.aspx"  >
    </forms>
</authentication>

अपने प्रमाणीकरण टैग को ऊपर बदलें (जहाँ index.aspx आपका स्टार्टअप पृष्ठ होगा)

और एक और बात इसे अपने web.config फ़ाइल के अंदर लिखें

<configuration>
   <system.webServer>
   <defaultDocument>
    <files>
     <clear />
     <add value="index.aspx" />
    </files>
  </defaultDocument>
  </system.webServer>

  <location path="index.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
   </system.web>
  </location>
</configuration>

3

आप web.config का उपयोग करके IIS डिफ़ॉल्ट दस्तावेज़ सेटिंग को ओवरराइड कर सकते हैं

<system.webServer>
    <defaultDocument>
      <files>
        <clear />
        <add value="DefaultPageToBeSet.aspx" />
      </files>
    </defaultDocument>
  </system.webServer>

या IIS का उपयोग करते हुए, संदर्भ के लिए लिंक देखें http://www.iis.net/configreference/system.webserver/defaultdocument


1

मैं निम्नलिखित विधि का उपयोग करना पसंद करता हूं:

system.webServer>
  <defaultDocument>
    <files>
      <clear />
      <add value="CreateThing.aspx" />
    </files>
  </defaultDocument>
</system.webServer>

1

मैंने उपरोक्त सभी उपाय किए थे लेकिन यह कारगर नहीं हुआ।

मेरा डिफ़ॉल्ट पृष्ठ एक aspx पृष्ठ नहीं था, यह एक html पृष्ठ था।

इस लेख से समस्या हल हो गई। https://weblog.west-wind.com/posts/2013/aug/15/iis-default-documents-vs-aspnet-mvc-routes

मूल रूप से, मेरे \ App_Start \ RouteConfig.cs फ़ाइल में, मुझे एक पंक्ति जोड़नी थी:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("");   // This was the line I had to add here!

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

उम्मीद है कि यह किसी की मदद करता है, इसका जवाब खोजने के दौरान मुझे अच्छा लगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.