c# - ASP.Net Core Web API应用程序: How to return success from all my action methods and not run the code in a certain mode?

标签 c# asp.net-mvc asp.net-core

我正在以各种模式配置我的服务器,并且我正在从配置文件设置应用程序的模式。 因此,假设我以“X”模式运行 HTTP 服务器,我希望客户端在到达有效端点时获得“HTTP STATUS 200 并且不执行任何逻辑”。 如果服务器处于“Y”模式,所有端点都应执行逻辑并根据请求处理返回状态

[Route("api/todo")]
public class TodoController : Controller{

        //if in mode "Y"
        [HttpGet("{id}", Name = "GetTodo")]
        public IActionResult GetById(long id)
        {
            var item = _todoRepository.Find(id);
            if (item == null)
            {
                return NotFound();
            }
            return new ObjectResult(item);
        }

       //if in mode "X"
       [HttpGet("{id}", Name = "GetTodo")]
       public IActionResult GetById(long id){
         return Ok();
       }

}

是否有一种使用过滤器的方法可以在不进入操作方法的情况下向客户端返回 OK?

编辑: 当我说模式时,我的意思是“生产”、“测试”、“登台”等模式。 [就像我们对所有这些模式都有不同的数据库连接字符串一样] 因此,我有一个名为“X”的模式[如果我的服务器在“X”模式下运行],任何访问我公开的端点的客户端都会获得成功。

最佳答案

是的,您可以通过使用验证来做到这一点 middleware 。我不明白你所说的在 X 模式或 Y 模式下运行 HTTP 服务器是什么意思,所以你需要调整你的代码。

例如,看一下下面的图片:

enter image description here

您需要实现如图中的“授权中间件”之类的东西。您只需在进入 Controller (Startup.cs 中的 app.UseMvc())之前返回 HTTP 200 OK 请求即可。

关于c# - ASP.Net Core Web API应用程序: How to return success from all my action methods and not run the code in a certain mode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117964/

相关文章:

c# - ASP.NET Dropdown 将空值传递给 Controller ​​操作

javascript - 这些js和css文件如何从我的元素中排除?

css - 打开下拉列表后设置第一行样式

c# - 从另一个项目运行 .net 核心项目

c# - 在 C# 中获取下载文件夹?

c# - DI 容器是否需要自己实例化对象才能使用构造函数注入(inject)?

asp.net - 在具有多个项目(API/服务/数据等)的解决方案中编写 SignalR 服务的最佳方法是什么?

jenkins - 使用.NET Core使用xunit生成结果报告测试

c# - DeviceIoControl 未设置输出缓冲区

c# - 尽管输入不同,但从 foreach 循环返回相同的值