asp.net mvc教程 - Visual Studio 2017错误:无法启动程序,在当前状态下操作不合法





2.0教程 core教程 (16)


对于我来说,问题是在调试Chrome窗口上登录我的Google帐户。 直到我登录后,这一直工作正常。 一旦我退出该Chrome实例并选择通过复选框删除所有设置 ,调试器再次正常工作。

我的Chrome的非调试实例仍然登录到Google,且未受影响。 主要问题是我可爱的插件已经从调试版本中消失了,但至少我可以再次浏览客户端代码。

在全新安装Visual Studio 2017之后,我尝试运行.NET Core Web项目,并尝试在Chrome上运行它时出现此错误:

无法启动程序,操作在当前状态下不合法




对我来说修复它的方法是在任务栏中查找打开的Chrome应用程序,右键单击并关闭它们。




3个选项

  1. 在工具>选项>调试>常规中关闭JavaScript调试功能
  2. 杀死所有chrome任务
  3. 切换到另一个浏览器进行调试



我尝试了Sibeesh Venu的答案, 但那对我没有用。 我相信如果我已经杀死了所有的铬合金工艺,它就会奏效。 我完成了其他一些测试,发现在Chrome设置中关闭“继续离开你的位置”,确保不会再发生这种情况。




改变这个项目设置为我解决了这个问题。




我只关闭了所有打开的chrome实例,停止了我的项目,然后再次启动它。 为我解决了这个问题。




在我的情况下的其他答案没有奏效。 在我可以再次调试应用程序之前,我必须重新启动Windows。




我最近有这个错误。 对我来说固定的是关闭正在运行检查员的铬窗口。 每当我检查一个网页时,我都会弹出它自己的窗口。 无需在Visual Studio上禁用或更改任何内容。




对我而言,解决方案(解决方法)是关闭Chrome上的JavaScript调试,我相信这是在VS 2017中引入的新功能。

转到工具>选项>调试>常规,并关闭启用JavaScript调试ASP.NET(Chrome和IE)的设置

这已经是一个已知的问题, 似乎正在进行调查

关于在VS 2017中JS调试的完整信息,请访问: https://blogs.msdn.microsoft.com/webdev/2016/11/21/client-side-debugging-of-asp-net-projects-in-google-chrome/https://blogs.msdn.microsoft.com/webdev/2016/11/21/client-side-debugging-of-asp-net-projects-in-google-chrome/




在VS2017中切换浏览器。 或者以管理员身份打开命令提示符并执行一次约10次的tskill chrome,以确保该应用完全死亡。 然后再试一次。 有时它会卡在另一个进程中,甚至需要重新启动。




当我试图在同一时间调试两个解决方案时,出现此错误消息,因为我想直观地比较这些差异。 取消选中为ASP.NET启用JavaScript调试(Chrome和IE)选项,但我仍然困惑为什么我无法一次调试多个解决方案。 由于这是一个已知问题,因此可能会在Visual Studio更新中解决。 这是希望....




当我收到此错误时,您可以尝试为我工作的另一个解决方案是清理解决方案,然后执行重建。 由于其他解决方案不能帮助我,我认为这可能会帮助同一船上的其他人。




我找到了解决这个问题的方法,这对我来说很有效。

选择Chrome作为浏览器,单击Debug菜单,然后选择Attach to Process...

在随后的对话框中,选择Chrome.exe中的Chrome.exe ,然后单击Attach to:Select按钮Attach to: 。 选中Native框,然后选择Attach (或者双击Chrome.exe ):

这启动项目运行而不启动浏览器。 在Chrome中停止并重新启动,错误消失。

当然,另一个可能的解决方案是使用不同的浏览器,但我喜欢在Chrome中进行调试。 :-)




今天我得到了这个错误,而我只是做了一些小小的工作,而这个工作太简单了。

  1. 关闭您在打开Visual Studio之前打开的所有chrome实例。
  2. 现在停止调试并再次运行您的应用程序。

你不会再次得到错误,如果调试器没有命中,再次刷新浏览器。

希望这可以帮助。




在最近的VS 2017更新(2017年3月14日发布:build 26228.09)之后,我遇到了同样的问题。 我的程序会在IE中调试好,但会在Chrome中弹出。 在Windows命令行中杀死Chrome的所有实例为我解决了这个问题。

taskkill /im chrome.exe /f

然后我可以在Chrome中进行调试。




我是asp.net安全人员。 首先让我道歉的是,这些都没有记录在音乐库样本或单元测试之外,并且所有这些都依照暴露的A​​PI进行了改进。 详细的文档在here

我们不希望您编写自定义授权属性。 如果你需要这样做,我们做错了什么。 相反,你应该写授权要求

授权对身份起作用。 身份通过身份验证创建。

你在评论中说你想检查标题中的会话ID。 您的会话ID将是身份的基础。 如果你想使用Authorize属性,你需要编写一个认证中间件来获取该头信息并将其转换为已认证的ClaimsPrincipal 。 然后您会检查授权要求内。 授权要求可以像你喜欢的那样复杂,例如这里是一个对当前身份采取出生日期声明的授权要求,如果用户超过18岁,授权要求将授权。

public class Over18Requirement : AuthorizationHandler<Over18Requirement>, IAuthorizationRequirement
{
        public override void Handle(AuthorizationHandlerContext context, Over18Requirement requirement)
        {
            if (!context.User.HasClaim(c => c.Type == ClaimTypes.DateOfBirth))
            {
                context.Fail();
                return;
            }

            var dateOfBirth = Convert.ToDateTime(context.User.FindFirst(c => c.Type == ClaimTypes.DateOfBirth).Value);
            int age = DateTime.Today.Year - dateOfBirth.Year;
            if (dateOfBirth > DateTime.Today.AddYears(-age))
            {
                age--;
            }

            if (age >= 18)
            {
                context.Succeed(requirement);
            }
            else
            {
                context.Fail();
            }
        }
    }
}

然后在你的ConfigureServices()函数中连接它

services.AddAuthorization(options =>
{
    options.AddPolicy("Over18", 
        policy => policy.Requirements.Add(new Authorization.Over18Requirement()));
});

最后将其应用于控制器或操作方法

[Authorize(Policy = "Over18")]




asp.net asp.net-core visual-studio-2017