相关疑难解决方法(0)

您是否可以从AuthorizeAttribute返回HTTP响应而不抛出异常?

我在各种控制器上使用AuthorizeAttribute,可能需要根据请求本身的某些属性返回403或429(请求太多).我完全在一个自定义的OnAuthorization实现中实现它,然后在必要时抛出一个带有相应响应代码的新HttpResponseException.在我的机器上工作得很好......

在规模上(每分钟数千个请求),这个实现很糟糕,它崩溃了网站.将相同的逻辑移动到控制器操作本身并且仅返回适当的HttpResponseMessage就perf而言工作得非常好,因此在OnAuthorization中抛出异常的费用似乎是perf问题的根本原因.

我喜欢在我可以用来装饰多个控制器和动作的属性中实现它的想法,我强烈不喜欢将少量逻辑移动到控制器动作中,然后重复多次.是否可以从注释返回适当的HTTP状态而不抛出异常?即使它不是从AuthorizeAttribute继承,以这种方式装饰代码也会更好.

编辑:这是Web API 2,而不是MVC

c# http asp.net-web-api

15
推荐指数
1
解决办法
3931
查看次数

如何在.Net Core中使用自定义预处理程序指令

我试图在.Net核心中使用预处理程序指令,但我无法确定获取指令的正确方法:

static void Main(string[] args)
{
    Console.WriteLine("Hello World!");
    #if MAC
    Console.WriteLine("MAC");
    #else
    Console.WriteLine("NOT MAC");
    #endif
}
Run Code Online (Sandbox Code Playgroud)

我已尝试从命令行进行各种排列以使其工作,但我似乎错过了一些东西.以下是运行各种构建和运行命令时的shell输出:

~/dev/Temp/DirectiveTests $ dotnet msbuild /p:MAC=TRUE
Microsoft (R) Build Engine version 15.1.548.43366
Copyright (C) Microsoft Corporation. All rights reserved.

  DirectiveTests -> /Users/me/dev/Temp/DirectiveTests/bin/Debug/netcoreapp1.1/DirectiveTests.dll
~/dev/Temp/DirectiveTests $ dotnet run /p:MAC=true
Hello World!
NOT MAC
~/dev/Temp/DirectiveTests $ dotnet run
Hello World!
NOT MAC
Run Code Online (Sandbox Code Playgroud)

我正在使用工具版本1.0.1 dotnet --version

有谁知道如何使用.net核心从命令行正确设置指令?

c# .net-core

12
推荐指数
2
解决办法
5001
查看次数

标签 统计

c# ×2

.net-core ×1

asp.net-web-api ×1

http ×1