小编Ale*_*lex的帖子

带有 SignalR Hub 的 ASP.NET Core 中的范围服务

我已将 SignalR 引入到我的 ASP.NET Core 2 项目中,但在使用我通常在控制器中使用的范围服务时遇到了一些问题。我觉得这个问题可能是由于 HTTP 请求、Websocket 和集线器之间的生命周期不同造成的。

对于每个 HTTP 请求,中间件都会读取Authorization令牌并更新该请求的作用域服务 ( ) 上的一些属性(例如 id、声明等)IUser。我在所有控制器中使用此服务没有任何问题。为了使其与 SignalR 一起使用,我发送一个access_token查询参数并事先使用一些其他中间件将此查询参数添加为工作正常的标头。

当我尝试访问IUserSignalR 中心中的服务时,问题就出现了。在构建集线器时,IUser被注入的 没有设置任何属性,尽管/hub请求的中间件只是设置了它们。

如果我将服务设置为单例,那么它可以工作,但IUser持续时间不应超过单个请求。

IUser我应该如何为特定 SignalR 连接设置?

// Startup.cs - User has several settable properties 
services.AddScoped<IUser, User>();
Run Code Online (Sandbox Code Playgroud)
// User Middleware
public class UserMiddleware
{
    private readonly RequestDelegate _next;

    public UserMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public Task Invoke(HttpContext context)
    {
        // …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr .net-core asp.net-core

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

将 JwtBearerOptions 注入控制器

Startup.cs启用了 JWT 身份验证,它在我的应用程序中完美运行。

b.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, o =>
{
    o.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = key,
        ValidateIssuer = true,
        ValidIssuer = JwtConstants.Issuer,
        ValidateAudience = true,
        ValidAudience = JwtConstants.Audience,
        ValidateLifetime = true,
        ClockSkew = TimeSpan.Zero
    };
});
Run Code Online (Sandbox Code Playgroud)

在我的一个控制器中,我想获取配置TokenValidationParameters中设置的句柄Startup.cs。我认为我可以通过向控制器构造函数提供IOptions<JwtBearerOptions> options并读取来实现此options.Value.TokenValidationParameters目的,但是,当注入时,属性与 中设置的值不匹配Startup.cs

我的最终目标是手动验证 JWT 令牌,如下所示。

var handler = new JwtSecurityTokenHandler();
var user = handler.ValidateToken(token, validationParameters, out var validatedToken);
Run Code Online (Sandbox Code Playgroud)

dependency-injection .net-core asp.net-core

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

用上下文自由语言抽取引理

我有一种语言,{a^i b^j c^k | i,j,k>=0 & i>j & j>k} 我开始假设有一些m是为我挑选的,这样就是一个字符串

   z = a^m b^(m-1) c^(m-2)
Run Code Online (Sandbox Code Playgroud)

然后,将字符串分成(z =) uvwxy,这样vx是不是空的,#(vwx)<=m 然后,当我来挑一个" i"我感到困惑.说我选择i=1然后我有: uv^1wx^1y而且我不完全确定从哪里开始因为对我来说看起来我可以选择一种语言中的vwx.

有什么建议?

math pumping-lemma context-free-grammar

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

函数变量的Python命名约定

Python对函数变量有命名约定吗?在PEP-8中,我看不到任何特定的东西(除了命名变量)。

由于函数是Python中的一类对象,因此使用_fn后缀或类似的东西是公认的约定吗?

编辑:更新了更现实的例子

例:

def foo_a():
    print 'a'

def foo_b():
    print 'b'

funcs = {'a': foo_a, 'b': foo_b}

# dynamically select function based on some key
key = 'a'
foo_fn = funcs[key]
Run Code Online (Sandbox Code Playgroud)

python function naming-conventions

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

Java Anagram解算器

我可以弄清楚如何创建字符串的字谜但我不知道如何将它们与真实单词的字典进行比较以检查字谜是否是真正的单词.Java API中是否包含整个英语词典?

java string dictionary solver anagram

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

从字符串中的字符生成像素矩阵

我正在编写一个库,该库将在连接到 Raspberry Pi 的 LED 矩阵上打印滚动文本。

我想要一个函数,它接受一个字符、高度和宽度并生成一个矩阵,其中包含应该设置的像素以表示指定的字符。

例如

def char_to_pixels(char, height, width):
    matrix = [width][height]

    # determine which pixels to set based on character supplied
    ...

    return matrix
Run Code Online (Sandbox Code Playgroud)

因此,对于char_to_pixels('I', 6, 6)您的呼叫,您可能需要一个如下所示的矩阵:

|0|1|1|1|1|0|
|0|0|1|1|0|0|
|0|0|1|1|0|0|
|0|0|1|1|0|0|
|0|0|1|1|0|0|
|0|1|1|1|1|0|
Run Code Online (Sandbox Code Playgroud)

我可以尝试为 [AZ] 定义每一个,但我想知道是否有一个图书馆已经做了这种事情?

python string graphics matrix python-3.x

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

PL/SQL中的检查值列表为NULL

有没有办法检查是NULLPL/SQL 中的值列表?

我有类似的东西:

SELECT * FROM myTable t WHERE t.dataId IN (:myList) OR :myList IS NULL
Run Code Online (Sandbox Code Playgroud)

在运行时,:myList符号代替字符串列表,例如

SELECT * FROM myTable t WHERE t.dataId IN ('a', 'b', 'c') OR  ('a', 'b', 'c') IS NULL
Run Code Online (Sandbox Code Playgroud)

我已经意识到这('a', 'b', 'c') IS NULL是无效的PL/SQL,所以我想知道是否有另一种方法可以检查值列表NULL.

我试图模仿的行为将评估('a', 'b', 'c')NOT NULL.我试图避免创建另一个变量(例如:myListFlag),''如果列表为空,它将返回.

java sql plsql

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

Streaming an in-memory generated file in ASP.NET Core

After trawling the internet for hours, I'm lost on how to solve my problem for ASP.NET Core 2.x.

I am generating a CSV on the fly (which can take several minutes) and then trying to send that back to the client. Lots of clients are timing out before I start sending a response, so I am trying to stream the file back to them (with an immediate 200 response) and write to the stream asynchronously. It seemed like this was …

c# asp.net-mvc csvhelper .net-core asp.net-core

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