【问题标题】:ASP.NET Default.aspxASP.NET 默认.aspx
【发布时间】:2012-08-19 15:33:27
【问题描述】:

找不到资源。

描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Customer/Reservation/Default.aspx

我应该如何解决这个问题?如果我将 Default.aspx 添加到文件夹保留中,这将解决我的问题,但有什么方法可以解决此错误吗? :)

提前致谢!

【问题讨论】:

  • 可能的其他方法的列表是巨大的。对于不想要 default.aspx,您有什么具体要求?

标签: c# asp.net


【解决方案1】:

我假设Default.aspx 位于虚拟目录Customer 或root 中,您正在开发可能已添加到/Customer/Reservation 页面的用户控件?如果是这样,在服务器端,使用ResolveUrl

Response.Redirect(ResolveUrl("~/Default.aspx"));

或者要在标记中从该目录创建链接,请使用:

<a href="<% = ResolveUrl("~/Default.aspx") %>">Click here to go home</a>

但是,如果您只是尝试导航到 /Customer/Reservation 并且在 IIS 中将默认页面设置为 Default.aspx,那么您必须将 Default.aspx 页面添加到虚拟子目录。

【讨论】:

  • 它在导航栏上。我应该怎么把它放在这里
  • Home
  • 从服务器端,需要输出ResolveUrl("~/Default.aspx")的结果,从客户端标记,只需添加&lt;% =ResolveUrl("~/Default.aspx")%&gt;
  • 【解决方案2】:

    只需添加文件。它给你这个错误的原因是因为它找不到文件夹的默认文档,而且(如果我没记错的话)IIS 默认情况下不会显示文件夹中的文件列表。

    我真的不明白您是如何在这里遇到问题的。该错误具有相当的描述性。

    【讨论】:

    • 还有其他方法吗? localhost:6707/Default.aspx - 我想当我点击主页时它会回到那个链接。但是当我将它添加到预订文件夹时,它看起来像这样localhost:6707/Customer/Reservation/Default.aspx
    • 修复该特定错误?不可以。HTTP 404 表示 Web 服务器无法找到或访问您尝试访问的文件。
    • @LiamMcSherry,你错了。解决不存在的known 路径的解决方案很简单——使用路由/重写。然后,您可以使用 www.something.com/mypage.hahaha 之类的网址,仍然可以获得您想要的结果。
    • 所以我有 Home - default.aspx Reservation - reservation.aspx 我应该将这些网络表单添加到每个文件夹中吗?
    【解决方案3】:

    你基本上有两种选择:

    create that fileuse routing to map that address to a desired file

    第二种方法的例子:

    protected void Application_Start(object sender, EventArgs e)
    {
       RegisterRoutes(RouteTable.Routes);
    }
    
    private void RegisterRoutes(RouteCollection routes)
    {
       routes.MapPageRoute("customer-reservation", // name of the route
                           "Customer/Reservation", // url to look for
                           "~/Pages/reservation.aspx");  // existing file to map to
    }
    

    请注意,如果您使用 Web 表单,则至少需要 .NET 版本 4 或更高版本,或者使用 MVC 才能工作。如果您使用的是较低的 .NET 版本而不使用 MVC,则需要一个 url 重写模块(在 Google 上搜索,返回大量结果)。

    注意2:这个例子属于Global.asax.cs文件。

    注意3:可以在此处找到其他示例,例如:http://weblogs.asp.net/jalpeshpvadgama/archive/2011/12/11/easy-url-rewriting-in-asp-net-4-0-web-forms.aspx

    如果你需要找到更多关于这个主题的资源,只需输入“asp.net routing”,它会给你足够的结果来学习。

    【讨论】:

    • @CarloAdap,啊,我知道我忘记了什么。你需要把它放在你的 Global.asax 文件中。更新答案以提及这一事实。
    • RouteTable 在当前上下文中不存在? :|我该怎么办?
    • @CarloAdap,您解决了所需的依赖关系吗?特别是using System.Web.Routing;
    • @CarloAdap ,
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签