asp.net site default document in subfolder

2019-01-15 12:51发布

问题:

My default document is in subfolder not in root how can i make it default in asp.net 2.0 website.

Tried iis7 default document setting to '/pages/default.aspx' '~/pages/default.aspx' but it didn't work.

回答1:

Default document is not the same as start page. Default document means if I requested mysite.com/somefolder and didn't specify a file, which file should IIS display.

If you want to use a specific page as your home page, create a Default.aspx file and write this in it's codebehind class:

public override void ProcessRequest(HttpContext context) {
    context.Response.Redirect("pages/default.aspx", true);
}

As the client might have disabled Javascript, a server side approach would be more reliable. However it's best to issue a permanent redirect instead of a simple Response.Redirect. Also doing it using JS will be bad from a SEO point of view.



回答2:

You don't need to create a dummy Default.aspx page.

In your Global.asax.cs file, write the following:

public void Application_Start(object sender, EventArgs e)
{
    var routeCollection = RouteTable.Routes;
    routeCollection.MapPageRoute("DefaultRoute", string.Empty, "~/YourDesiredSubFolder/YourDesiredDocument.aspx");
}

Explanation:

  • Application_Start code is guaranteed to run once and only once on the application start.
  • The first line of code, gets a collection of the URL routes for your application.
  • The second line of code, defines a new route pointing to your inner page in the subfolder that you wish.
  • The second argument is empty to indicate that this route is used when there's no specific page is requested and there's no Default document existing.


回答3:

Default documents are a subfolder-specific thing - what you're trying to do won't (directly) work. Set up a default.htm file in the root, and have it refresh to your real "home page".

The better question you should be asking is how on Earth your homepage got out of the root directory.



回答4:

In theory you could have a Web.config file inside the directory and use the defaultDocument element to set the default document. See here: https://stackoverflow.com/a/2012079/125938.
Unfortunately I haven't been able to get it to work myself locally, but that might be because it isn't supported in the Visual Studio development server.



回答5:

Say "index.html" is the default page you want and it is present in "Public" subfolder.

Instead of specifying "/Public/index.html" as the default site, try "Public/index.html"



标签: asp.net iis-7