小编Jed*_*i31的帖子

使用在Asp.Net Core中实现另一个接口来解析DBContext

我有一个具有它签名的EF上下文

public class MyContext : DbContext, IDbContext
{

}
Run Code Online (Sandbox Code Playgroud)

当我将它添加到服务时,我使用它

services.AddDbContext<MyContext>(op =>
{
    op.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});
Run Code Online (Sandbox Code Playgroud)

但是当我注入IDbContext时会导致问题,就像这样

services.AddScoped(typeof(IDbContext), typeof(MyContext));
Run Code Online (Sandbox Code Playgroud)

因为它复制了我的DbContext,而且每个请求应该只有一个.

我该如何解决?

c# entity-framework-core asp.net-core

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

无法在本地Docker Container上访问Asp.Net Core

我在asp.net核心创建了一个应用程序并创建了一个dockerfile来生成本地图像并运行它.

FROM microsoft/dotnet:latest

COPY . /app

WORKDIR /app

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000/tcp

ENTRYPOINT ["dotnet", "run", "--server.urls", "http://0.0.0.0:5000"]
Run Code Online (Sandbox Code Playgroud)

然后,我使用以下命令构建了我的图像

docker build -t jedidocker/first .
Run Code Online (Sandbox Code Playgroud)

然后,我使用以下命令创建了一个容器

docker run -t -d -p 5000:5000 jedidocker/first
Run Code Online (Sandbox Code Playgroud)

但是当我将以下url运行到我的主机浏览器中时

http://localhost:5000/
Run Code Online (Sandbox Code Playgroud)

我有一个 ERR_EMPTY_RESPONSE

这是网络问题吗?我该如何解决?

PS:我的Windows版本是10.0.10586

asp.net docker

5
推荐指数
2
解决办法
5464
查看次数

撤销用户所有刷新令牌

我正在使用密码授予流程和 asp.net Identity。

我想在每次执行登录时杀死用户的所有刷新令牌。即使他使用不同的设备(例如其他电脑或智能手机)登录,我也需要它来终止其“会话”。

那么,我该怎么做呢?

我可以只做一个UserManager.UpdateSecurityStampAsync(user.Id);,还是我需要别的东西?

非常感谢你的帮助!

openid-connect asp.net-core openiddict

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

Linqkit中使用PredicateBuilder的通用查询

我一直在使用LinqKit来创建通用查询.

一直困扰我的一件事是你总是要测试过滤器中发送的值是否有效.

例如:假设我有一个字符串过滤器.条件可以是Equal,StartsWith,EndsWith和Contains.

我的方法看起来像这样:

public List<MyModel> Get(MyModelFilter filter)
{
    if (string.IsNullOrEmpty(filter.prop))
    {
        predicate = predicate.And(_myModel => myModel.Prop.Contains(filter.prop));
    }

    // Plus a giant amount of if's with multiple filters

    return DbSet.AsExpandable()
            .Where(predicate)
            .ToList();
}
Run Code Online (Sandbox Code Playgroud)

为了结束这一堆If,我决定创建一个通用方法来将过滤器应用于属性.我的想法是传递将应用过滤器的属性和过滤器定义,并封装表达式创建逻辑

它将是这种类型的东西:

public List<MyModel> Get(MyModelFilter filter)
{
    predicate = predicate.And(_myModel => myModel.Prop, filter.PropFilterDefinition);

    // Goodnye If's, Only others filter impl

    return DbSet.AsExpandable()
            .Where(predicate)
            .ToList();
}
Run Code Online (Sandbox Code Playgroud)

为此,我创建了一些扩展方法来处理这个问题

public static Expression<Func<TPredicate, bool>> And<TPredicate>(
    this ExpressionStarter<TPredicate> predicate,
    Func<TPredicate, string> property, StringFilterDefinition filter,
    bool ignoreNull = true)
{
    if …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework linqkit entity-framework-core

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