小编Joh*_*ohn的帖子

使用AsNoTracking()实体框架延迟加载

我们目前正在使用延迟加载实体框架并运行out of memory exception.我们遇到此异常的原因是因为Linq查询加载了大量数据,而在后期阶段它使用延迟加载来加载导航属性.但是因为我们没有使用NoTrackingChangesEntity Framework缓存,所以很快就会产生内存错误.

我对EF的理解是我们应该始终使用NoTrackingChanges查询,除非你想从查询中更新返回的对象.

然后我测试使用NoChangeTracking:

var account = _dbcontext.Account
                        .AsNoTracking()
                        .SingleOrDefault(m => m.id == 1); 
var contactName = account.Contact.Name
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

System.InvalidOperationException:当使用NoTracking合并选项返回对象时,只能在EntityCollection或EntityReference不包含对象时调用Load.

c# entity-framework entity-framework-6

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

OAuth范围以及应用程序角色和权限

目前,我的应用程序正在根据角色和权限验证用户的访问权限。例如,如果用户是admin,则他拥有所有权限。

但是,现在我正在为Web应用程序和REST API的单点登录和基于令牌的身份验证实现OAuth 2.0和OpenIdConnect。

OAuth 2.0和Open id connect严重依赖于范围进行访问控制。诸如account.write account.read account.delete之类的范围与权限“ CanCreateAccount”,“ CanReadAccount”,“ CanDeleteAccounts”,“ CanAssignRolesToPermissions”非常相似。

我不明白两者之间的区别。这种分离迫使我的应用程序在访问REST API时检查客户端的范围,并单独检查用户的权限。我相信这会导致代码重复。

我认为OAuth 2.0范围和应用程序权限相同是正确的吗?如果是这样,那么我是否应该坚持整个应用程序的作用域,而不是维护单独的应用程序权限?

例如,当前为用户分配了一个角色,并且该角色具有权限。如果我用范围替换权限,则不必重复客户端/用户范围/权限检查功能。

您可能在想为什么不使用权限替换作用域。那是因为我要坚持OAuth 2.0规范,并且在整个规范中都使用了范围。

security openid oauth-2.0 asp.net-identity identityserver4

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

Asp.net Web Api 停止使用 ARRAffinity cookie

我的 API 使用不记名令牌进行身份验证,控制器使用 Authorize 属性。

每当我使用邮递员查询 API 时。由于某种原因,它会在每个请求中发送一个 ARRAffinity cookie 以及不记名令牌。

但是,当我在没有 cookie 的情况下使用 fiddler 调用相同的 API 端点时。它随机失败并返回 401。是的,一些请求会随机获得 200 成功,而另一些则会失败并返回 401。

但是,当我通过 fidler 传递 ARRAffinity cookie 时。它可以正常工作,不会出现任何故障。

有没有办法阻止 Web Api 或 azure 生成 ARRAffinity cookie。我只想使用不记名而不是cookie。

asp.net azure asp.net-web-api azure-web-app-service

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