gpt4 book ai didi

asp.net-mvc - MVC 6, HomeControler Index() 被调用两次

转载 作者:行者123 更新时间:2023-12-04 12:53:10 26 4
gpt4 key购买 nike

刚刚更新到 MVC 6 RC 1 并创建了一个新的 MVC 应用程序。

发现 Index action 方法被调用了两次。
Index()HomeControler :

public string Index()
{
System.Diagnostics.Debug.WriteLine("############################");
return string.Empty;
}

我从 Startup.cs 中删除了所有内容配置除默认路由。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}

全局布局被删除。 _ViewStart.cshtml
@{
// Layout = "_Layout";
}

浏览器中的输出为空。没有脚本。

控制台输出:
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.Extensions.Localization.Abstractions\1.0.0-rc1-final\lib\net451\Microsoft.Extensions.Localization.Abstractions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.VisualStudio.Web.BrowserLink.Loader\14.0.0-rc1-final\lib\dnx451\Microsoft.VisualStudio.Web.BrowserLink.Loader.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.AspNet.WebUtilities\1.0.0-rc1-final\lib\net451\Microsoft.AspNet.WebUtilities.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
############################
############################
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.AspNet.Http.Extensions\1.0.0-rc1-final\lib\net451\Microsoft.AspNet.Http.Extensions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The thread 0x70a4 has exited with code 0 (0x0).

调用堆栈:
MvcTest1!MvcTest1.Controllers.HomeController.Index() Line 15    C#
[Native to Managed Transition]
[Managed to Native Transition]
Microsoft.AspNet.Mvc.Core.dll!Microsoft.AspNet.Mvc.Controllers.ControllerActionExecutor.ExecuteAsync(System.Reflection.MethodInfo actionMethodInfo, object instance, object[] orderedActionArguments) Unknown
Microsoft.AspNet.Mvc.Core.dll!Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.InvokeActionAsync(Microsoft.AspNet.Mvc.Filters.ActionExecutingContext actionExecutingContext) Unknown
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.<InvokeActionAsync>d__6>(ref Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.<InvokeActionAsync>d__6 stateMachine) Unknown
Microsoft.AspNet.Mvc.Core.dll!Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.InvokeActionAsync(Microsoft.AspNet.Mvc.Filters.ActionExecutingContext actionExecutingContext) Unknown
Microsoft.AspNet.Mvc.Core.dll!Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.InvokeActionFilterAsync() Unknown
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.<InvokeActionFilterAsync>d__53>(ref Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.<InvokeActionFilterAsync>d__53 stateMachine) Unknown
Microsoft.AspNet.Mvc.Core.dll!Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.InvokeActionFilterAsync() Unknown

编辑

发现 HomeControler 构造函数被调用了两次???
public class HomeController : Controller
{
public HomeController()
{
System.Diagnostics.Debug.WriteLine("CCCCCCCCCCCCCCCCCCCCCC");
}

public string Index()
{
return string.Empty;
}

控制台输出:
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.Extensions.Localization.Abstractions\1.0.0-rc1-final\lib\net451\Microsoft.Extensions.Localization.Abstractions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.VisualStudio.Web.BrowserLink.Loader\14.0.0-rc1-final\lib\dnx451\Microsoft.VisualStudio.Web.BrowserLink.Loader.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.AspNet.WebUtilities\1.0.0-rc1-final\lib\net451\Microsoft.AspNet.WebUtilities.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
CCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCC
'dnx.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Miroslav\.dnx\packages\Microsoft.AspNet.Http.Extensions\1.0.0-rc1-final\lib\net451\Microsoft.AspNet.Http.Extensions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The thread 0x5d84 has exited with code 0 (0x0).
The thread 0x7334 has exited with code 0 (0x0).

编辑 2

问题可能只出现在 Debug模式下:
public static class Counter
{
public static int CtrCalled { get; set; }
public static int IndexCalled { get; set; }
}

public class HomeController : Controller
{
public HomeController()
{
Counter.CtrCalled++;
}

public string Index()
{
Counter.IndexCalled++;
return $"Constructor called: {Counter.CtrCalled}, Index called: {Counter.IndexCalled}.";
}
}

Debug模式输出: Constructor called: 2, Index called: 1.
带调试点的 Debug模式: Constructor called: 2, Index called: 2.
Release模式输出: Constructor called: 1, Index called: 1.

最佳答案

丹尼尔·罗斯回答:

This is VS sending a separate request to setup debugging. If you try to run the app outside of VS you shouldn't see this extra request.



进一步讨论: https://github.com/aspnet/Tooling/issues/261

关于asp.net-mvc - MVC 6, HomeControler Index() 被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com