我有一个MVC应用程序,要求用户使用其Microsoft帐户登录,并且在localhost上进行测试时可以正常工作,但是在将用户登录后重定向到时http://{appname}.azurewebsites.net/home/error,将其发布到Azure时,由于我没有找到404,在我的家庭控制器上未实现错误方法。我的问题是,我不知道是什么导致应用程序重定向到此错误页面。尝试http://{appname}.azurewebsites.net/home在浏览器上手动输入只会再次重定向到错误页面。
我尝试在家庭控制器上创建一个错误方法,该方法只是在屏幕上显示一个“ hello”,并且确实发生了一些奇怪的事情,该应用程序一直在错误页面URL和Windows登录页面之间来回重定向,而没有实际打开其中任何一个(我可能会看到这些网址在浏览器上来回切换,但没有一个页面打开过,因为它在完成加载之前已重定向)。
然后,我将home控制器上的方法基本保留为空,如下图所示,仅保留了Visual Studio添加的默认内容,但同样的问题一直在发生。
[Authorize]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
在web.config上<customErrors mode="Off"/>,我右键单击错误页面,然后单击show source,在html之后列出了该异常堆栈跟踪:
[HttpException]: A public action method 'Error' was not found on controller 'LogDatabaseApi.Controllers.HomeController'.
at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
但这似乎只是说未找到home控制器中的错误方法,没有说为什么应用程序首先重定向到错误页面。实际上,我在正常运行的同一Web应用程序中有一个API控制器(不需要授权)。而且home控制器可以在localhost上完美运行,它可以在Azure上完成所有这些奇怪的工作。
慕运维8079593
相关分类