You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:59:54