ASP.NET项目AllowAnonymous及System.Web.Mvc报错问题求助
解决ASP.NET Core中AllowAnonymousAttribute找不到的问题
嘿,我一眼就看出问题出在哪了——你把传统ASP.NET MVC和ASP.NET Core的命名空间搞混啦!
问题根源
你尝试引用的System.Web.Mvc是传统ASP.NET MVC框架的专属命名空间,但你当前开发的是ASP.NET Core项目。ASP.NET Core是完全重构后的框架,已经彻底抛弃了System.Web相关的旧组件,所以会报“Mvc不存在于System.Web中”的错误;而且ASP.NET Core里的AllowAnonymousAttribute根本不在这个旧命名空间里。
具体解决步骤
第一步:移除错误的引用语句
删掉代码里这行错误的using:using System.Web.Mvc;第二步:添加正确的命名空间
加入ASP.NET Core授权体系的专属命名空间:using Microsoft.AspNetCore.Authorization;第三步:确认依赖包已安装
多数ASP.NET Core项目默认会自带Microsoft.AspNetCore.Authorization包,如果你的项目缺失,打开终端执行以下命令安装:dotnet add package Microsoft.AspNetCore.Authorization
修正后的完整代码片段
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; // 新增的正确命名空间 using DatingApp.API.Data; using Microsoft.EntityFrameworkCore; namespace DatingApp.API.Controllers { [AllowAnonymous] [Route("api/[controller]")] public class ValuesController : Controller { private readonly DataContext _context; public ValuesController(DataContext context) { _context = context; } // GET api/values [HttpGet] public async Task<IActionResult> GetValues() { var values = await _context.Values.ToListAsync(); return Ok(values); } } }
为什么这样能解决?
ASP.NET Core把授权相关的特性(比如AllowAnonymous、Authorize)都统一迁移到了Microsoft.AspNetCore.Authorization命名空间下,完全脱离了传统的System.Web.Mvc体系,只要切换到正确的命名空间,所有报错都会消失。
现在再执行dotnet watch run,项目应该就能正常启动啦!
内容的提问来源于stack exchange,提问作者Amy Zeng
相关产品推荐
相关产品推荐

