当我在服务器中调用RedirectToAction时发生错误
环境。
开发: VisualStudio2012 MVC4 .NetFrameWrok4.5
服务器: WindowsServer2008 R2 iis 7.5
如果我登录失败,我调用 - > return RedirectToAction("LoginError", "Search");
当我在VisualStudio上调试时它工作正常。 但是,它是服务器上的返回错误页面。
这是错误消息。
'/'中的服务器错误应用程序描述:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。 堆栈跟踪:
[出现InvalidOperationException:
System.Web.Mvc.RedirectToRouteResult.ExecuteResult(ControllerContext上下文)+479
System.Web.Mvc。<> c__DisplayClass1a.b__17()+33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter,ResultExecutingContext preContext,Func 1 continuation) +613
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 continuation) +613
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 continuation) +613
1 filters,ActionResult actionResult)+263
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList
System.Web.Mvc.Async。<> c__DisplayClass25.b__22(IAsyncResult asyncResult)+230
System.Web.Mvc。<> c__DisplayClass1d.b__18(IAsyncResult asyncResult)+28
System.Web.Mvc.Async。<> c__DisplayClass4.b__3(IAsyncResult ar)+20 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+53
System.Web.Mvc.Async。<> c__DisplayClass4.b__3(IAsyncResult ar)+20
System.Web.Mvc。<> c__DisplayClass8.b__3(IAsyncResult asyncResult)+42
System.Web.Mvc.Async。<> c__DisplayClass4.b__3(IAsyncResult ar)+20
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+453 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+371
我找到了这个。 RedirectToAction导致ASP.NET MVC 3中的“路由表中没有路由与提供的值匹配”
return RedirectToAction("ActionName", "ControllerName", new { area = "AreaName" });
但我无法理解新的{ area = "AreaName" }
。 我不知道这是什么。
如果你知道的话,请教我这个。 谢谢。
除非你定义了区域,否则你不需要这个。 了解这些区域是什么,请查看此MSDN文章。
简而言之,它们就像是MVC应用程序的一个独立部分。
关于你的错误,我会假设使用这个重载return RedirectToAction("ActionName", "ControllerName")
应该足够,但没有看到代码,它只是一个假设。
还请检查本文中重定向到操作的重载完整列表。
我找到解决方案。 问题的原因是Routeconfig.cs。 我只写了这个。
routes.MapRoute(
name: "SearchPart_three_para",
url: "{controller}/{action}/{id}/{requestcode}/{systemid}",
defaults: new
{
controller = "Search",
action = "SearchPart",
id = UrlParameter.Optional,
requestcode = UrlParameter.Optional,
systemid = UrlParameter.Optional
}
);
我编辑这样。
routes.MapRoute(
name: "SearchPart",
url: "{controller}/{action}",
defaults: new
{
controller = "Search",
action = "SearchPart"
}
);
routes.MapRoute(
name: "SearchPart_three_para",
url: "{controller}/{action}/{id}/{requestcode}/{systemid}",
defaults: new
{
controller = "Search",
action = "SearchPart",
id = UrlParameter.Optional,
requestcode = UrlParameter.Optional,
systemid = UrlParameter.Optional
}
);
参考这里。 ASP.NET MVC:出现空动作链接
谢谢!
链接地址: http://www.djcxy.com/p/72701.html