当我在服务器中调用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, IList
1 continuation) +613
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList
1 continuation) +613
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList
1 filters,ActionResult actionResult)+263
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

上一篇: Get error when I called RedirectToAction in server

下一篇: MVC Routing below sub folders