使用页面路由的链接问题

时间:2013-01-25 13:42:04

标签: c# asp.net routes

我正在使用RouteTable为我的网站注册一些路线。现在,它看起来像这样:

Global.asax中

void Application_Start(object sender, EventArgs e)
{    
    RemoteReaderPlugin.Current.AllowRemoteRequest += Current_AllowRemoteRequest;

    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    //routes.Ignore("{resource}.axd/{*pathInfo}");

    //Clan
    routes.MapPageRoute("","Clan/{address}","~/Clan/Default.aspx");
    routes.MapPageRoute("", "Clan/Register", "~/Clan/Register.aspx");
    routes.MapPageRoute("", "Member/GameRanking/{address}", "~/Member/GameRanking.aspx");

    //Member
    routes.MapPageRoute("", "Member/{address}", "~/Member/Default.aspx");
    routes.MapPageRoute("", "Member/Register", "~/Member/Register.aspx");
    routes.MapPageRoute("", "Member/GameRanking/{address}", "~/Member/GameRanking.aspx");

    //Site
    routes.MapPageRoute("", "{address}", "~/{address}.aspx");
    routes.MapPageRoute("", "{address}/{resource}", "~/{address}/{resource}.aspx");
}

当我将浏览器指向http://localhost:27950/OCDB/Default时,这一切都有效。

但是,当我将浏览器指向http://localhost:27950/OCDB/时,我点击的任何链接都会导致此错误:

Server Error in '/OCDB' Application.

The HTTP verb POST used to access path '/OCDB/' is not allowed.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: The HTTP verb POST used to access path '/OCDB/' is not allowed.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[HttpException (0x80004005): The HTTP verb POST used to access path '/OCDB/' is not allowed.]
   System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) +2523961
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +301
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18034

有没有办法解决这个错误?或者在任何事情之前强制浏览器/Default

1 个答案:

答案 0 :(得分:1)

如果替换此行会发生什么:

routes.MapPageRoute("", "{address}", "~/{address}.aspx");

routes.MapPageRoute("", "{address}", "~/{address}.aspx", true, defaults: new RouteValueDictionary { { "address", "default" } });

希望这会有所帮助