小编Ian*_*emp的帖子

IAuthorizationFilter 不是每次都调用

我们使用一个IAuthorizationFilter类来过滤所有请求,并检查身份验证 cookie 中是否仍然存在自定义用户声明(多租户应用程序)。这些信息对于应用程序的其余部分至关重要。如果这些信息不存在,我们将重定向到登录页面。

    public class TokenAuthorizationFilter : IAuthorizationFilter, IAsyncAuthorizationFilter
    {

        public TokenAuthorizationFilter()
        {
            // Some dependency injection ...
        }

        public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
        {
            CheckToken(context);
        }

        public Task OnAuthorizationAsync(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
        {
            return CheckToken(context);
        }
}
Run Code Online (Sandbox Code Playgroud)

我们像这样注册我们的过滤器

    services.AddMvc(config =>
    {
        config.Filters.Add(typeof(TokenAuthorizationFilter));
    });
Run Code Online (Sandbox Code Playgroud)

我想要访问的控制器的操作非常简单:

[Authorize(Policy = "TokenValid")]
public class HomeController : AjaxBaseController
{
    public IActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们甚至没有达到我们的政策AuthorizeAttribute。正如我在堆栈跟踪中看到的, Identity 在检查 a 后尝试Microsoft.AspNet.Identity.SignInManager在中间件中的某个位置创建一个CookieAuthenticationOptions,我假设他正在尝试重新登录用户,但它没有检查我的 Filter ?登录在我们的应用程序中非常特殊,所以我不想让 Identity 自动登录我们的用户。当身份验证 cookie 过期时,我可以重现此问题。有任何想法吗 ?谢谢 !

c# asp.net-core-mvc asp.net-identity-3 asp.net-core

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

自定义InputFormatter在ASP.NET Core 2.0中被忽略

我需要构建一个ASP.NET Core 2.0 Web API应用程序,该应用程序将能够完成自定义XML输入和输出格式。

我已经成功设置了一个自定义输出格式化程序,但是没有一个自定义输入格式化程序。

更准确地说,这是启动配置:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc(opt =>
        {
            opt.ReturnHttpNotAcceptable = true;

            opt.OutputFormatters.Clear();
            opt.InputFormatters.Clear();
            opt.InputFormatters.Add(new SoapInputFormatter());
            opt.OutputFormatters.Add(new SoapOutputFormatter());
        });
}
Run Code Online (Sandbox Code Playgroud)

这个想法是具有定制的SOAP输入和输出格式。不,现有的XmlDataContractSerializerInputFormatter不会。

SoapOutputFormatter类:

public class SoapOutputFormatter : IOutputFormatter
{
    public bool CanWriteResult(OutputFormatterCanWriteContext context)
    {
        return true;
    }

    public async Task WriteAsync(OutputFormatterWriteContext context)
    {
        var bytes = Encoding.UTF8.GetBytes(context.Object.ToString());
        await context.HttpContext.Response.Body.WriteAsync(bytes, 0, bytes.Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

SoapInputFormatter班级:

public class SoapInputFormatter : InputFormatter
{
    public override Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context)
    {
        throw new …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-core asp.net-core-2.0 inputformatter

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

ASP.NET Core + ApplicationInsights将错误记录为跟踪

我正在使用Microsoft.ApplicationInsights.AspNetCore(https://www.nuget.org/packages/Microsoft.ApplicationInsights.AspNetCore)。

我通过在Programs.cs和启动类中添加.UseApplicationInsights()来启用应用程序见解:

    loggerFactory.AddApplicationInsights(app.ApplicationServices);
Run Code Online (Sandbox Code Playgroud)

一切正常,我可以在应用程序洞察中查看请求,但是当我尝试记录错误时(例如在控制器中):

        _logger.LogError("My Error Log");
        _logger.LogError("Test", new Exception("Test"));
Run Code Online (Sandbox Code Playgroud)

两者均记录为跟踪事件,而不是应用程序见解中的异常。

我如何使它记录为例外?

c# azure-web-sites azure-application-insights asp.net-core

1
推荐指数
2
解决办法
2108
查看次数

如何在ASP.net核心身份中实现基于权限的授权?

我正在尝试使用asp.net Identity Core保护我的webAPI。现在,我想动态创建角色,并在我的管理面板中对其进行设置/删除权限。

例如,我有此权限列表:

  • 注册任务
  • 分配任务
  • 更改任务状态
  • 验证任务状态

现在,我想创建不同的角色,并根据需要为他们设置此权限,并将这些角色分配给每个用户。

我在Identity框架的UserManager和RoleManager中进行了搜索,但是无法创建此功能。

有没有实现此功能的方法?我觉得很有用,但这是关于dotnet的

c# asp.net-web-api asp.net-identity asp.net-core

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

有什么办法可以重写此查询以使其更“ LINQ-ier”?

以下内容将- /分隔的URL路径解析为键/值对的字典:

    private Dictionary<string, string> ParsePathParameters(string path)
    {
        var parameters = new Dictionary<string, string>();
        if (string.IsNullOrEmpty(path))
        {
            return parameters;
        }

        var pathSegments = path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

        for (var i = pathSegments.Length - 1; i >= pathSegments.Length % 2; i -= 2)
        {
            parameters.Add(pathSegments[i - 1], pathSegments[i]);
        }

        return parameters;
    }
Run Code Online (Sandbox Code Playgroud)

输入格式是[/preamble][/key1/value1][/key2/value2]...[/keyN/valueN]这样的,例如,给定输入“ / foo / 1 / bar / Thing”或“ / slug / foo / 1 / bar / Thing”,输出将是:

Dictionary<string, string>
{
    { "foo", "1" …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

Is there a difference between x =&gt; x + 1 and x =&gt; x += 1?

I'm currently learning functional programming, and I was wondering if there is a difference between these functions.

Func<int, int> incrementByOne = x => x += 1;
Func<int, int> incrementByOne2 = x => x + 1;
Run Code Online (Sandbox Code Playgroud)

c# lambda

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

CentOS安装后看不到python3.8

我已经在本教程的帮助下安装了最新版本的Python:https://computingforgeeks.com/how-to-install-python-on-3-on-centos/

“哪个”看到 python3.6 但没有看到 python3.8

[nikolay@nikovm ~]$ which python3.6
/bin/python3.6
[nikolay@nikovm ~]$ which python3.8
/usr/bin/which: no python3.8 in (/home/nikolay/.local/bin:/home/nikolay/bin:/sbin:/bin:/usr/sbin:/usr/bin) 

[nikolay@nikovm ~]$ python3.8
bash: python3.8: command not found  

[nikolay@nikovm ~]$ python3.6
Python 3.6.8 (default, Nov 21 2019, 19:31:34)
[GCC 8.3.1 20190507 (Red Hat 8.3.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>     

[nikolay@nikovm ~]$ ls /usr/local/lib
libpython3.8.a  pkgconfig  python3.6  python3.8
[nikolay@nikovm ~]$  

[nikolay@nikovm ~]$ ls /bin/ | grep python
python3
python3.6
python3.6m
unversioned-python

[nikolay@nikovm ~]$ ls …
Run Code Online (Sandbox Code Playgroud)

python linux bash installation centos

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

反序列化 HttpResponseMessage

我有一个 API (asp net core 3.1) 和一个 Web 应用程序 (asp net Blazor WebAssembly)。在我的 API 中,我有一个 CustomerController,其 POST 方法如下:

    [HttpPost]
    public async
        Task<ActionResult>
        CreateOrderAsync(OrderDto orderDto)
    {
        orderDto.IdOrder =
            await repository
            .CreateOrderAsync(mapper.Map<Order>(orderDto));
        return CreatedAtRoute(nameof(GetOrderByIdAsync),
            new { idOrder = orderDto.IdOrder }, orderDto);
    }
Run Code Online (Sandbox Code Playgroud)

在我的 Web 应用程序中,我有 DataServiceHelper 类,我在 Web 应用程序的实际数据服务中使用它。这里我有POST和GET等方法:

  ...
  static public async Task PostAsync(HttpClient httpClient, string endpoint, T item)
  {
     await httpClient.PostAsJsonAsync(endpoint, item);
  }
  static public async Task<T> FindOneByIdAsync(HttpClient httpClient, string endpoint)
  {
      return await JsonSerializer.DeserializeAsync<T>
         (await httpClient.GetStreamAsync(endpoint), new JsonSerializerOptions()
         { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-core blazor blazor-webassembly

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

如何将 Serilog 添加到单元测试的服务集合中

在我们的 .Net Core 3.1 项目中,我们使用 Serilog 进行日志记录

在我的测试设置中,我创建了一个 ServiceCollection,以便我可以使用服务集合 \ - 提供程序来更新我在测试中使用的类。我有一个同时使用 DbContext 和 Serilog 记录器的存储库。

using Serilog;
using Microsoft.EntityFrameworkCore;

namespace MyApp.Persistency
{
    public class MyRepository : IMyRepository

{
    private readonly DataContext _dataContext;
    private readonly ILogger _logger;

    public OpvragenOnbekendeBurgerRegistratieRepository(DataContext dataContext, ILogger logger)
    {
        _dataContext = dataContext;
        _logger = logger;
    }
...
}
Run Code Online (Sandbox Code Playgroud)

在我的测试课中:

    [TestInitialize]
    public void Initialize()
    {
         var diCollection =
         new ServiceCollection()
             .AddSingleton(new SqlConnectionOption(_connectionstring))
             .AddDbContext<DataContext>(
                options =>
                {
                   options.UseSqlServer(_connectionstring);
                }
              )
              ...               
              xxx Add some kind of Serilog registration …
Run Code Online (Sandbox Code Playgroud)

c# mstest serilog .net-core

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

是否有支持多个宽度的jquery轮播插件?

我试图找到一个类似于JCarousel的jQuery carousel插件,但它支持多个宽度的div.JCarousel仅在您具有设定的宽度和高度时才有效.

谢谢.

jquery plugins

0
推荐指数
1
解决办法
4641
查看次数