我有以下代码可以在 .NET Core 2.2 中编译和运行:
byte[] key = Encoding.ASCII.GetBytes(Constants.JWT_SECRET);
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(x =>
{
x.RequireHttpsMetadata = false;
x.SaveToken = true;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false,
ValidateAudience = false
};
});
Run Code Online (Sandbox Code Playgroud)
在 .NET Core 3.0 中,我收到错误消息:
错误 CS1061“AuthenticationBuilder”不包含“AddJwtBearer”的定义,并且找不到接受“AuthenticationBuilder”类型的第一个参数的可访问扩展方法“AddJwtBearer”(您是否缺少 using 指令或程序集引用?)
并尝试升级到 3.0 版,这似乎是定义 this 的最后一个版本。如何将 AddJwtBearer 迁移到 Core 3.0?
随着 .NET Core 3.0 的变化,我得到了
... NavigationExpandingExpressionVisitor' 失败。这可能表示 EF Core 中存在错误或限制。有关更多详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2101433。)---> System.InvalidOperationException:处理 LINQ 表达式“GroupJoin,...
这是一个非常简单的查询,因此必须有一种方法可以在 .NET CORE 3.0 中执行它:
var queryResults1 = await patients
.GroupJoin(
_context.Studies,
p => p.Id,
s => s.Patient.Id,
(p, studies) => new
{
p.DateOfBirth,
p.Id,
p.Name,
p.Sex,
Studies =studies.Select(s1=>s1)
}
)
.AsNoTracking().ToListAsync();
Run Code Online (Sandbox Code Playgroud)
我基本上是在寻找一个 Linq 查询(或上面的方法语法),它将研究加入患者,并将研究设置为空列表或空列表,如果给定患者没有研究。
有任何想法吗?这在 .NET Core 2.2 中有效。此外,上面的 MSFT 链接提到关键突破性更改与客户端评估有关,并避免生成的查询读取整个表,然后必须加入或过滤客户端。然而,通过这个简单的查询,连接应该很容易在服务器端进行。
我正在尝试将项目从 .net core 2.2 迁移到 3.0。
我收到错误:
错误 CS0433 类型 'IAsyncEnumerable< T >' 存在于 'System.Interactive.Async, Version=3.2.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263' 和 'System.Runtime, Version=4.2.1.0
我在这里尝试了一个建议:https : //github.com/aspnet/EntityFrameworkCore/issues/15047,它建议强制更新到 System.Interactive.Async 4.0.0。(我将此引用添加到我的项目中)。
但是我有另一个错误:引用类型“IAsyncEnumerable<>”声称它在“System.Interactive.Async”中定义,但找不到
我正在使用 IAsyncQueryProvider,它似乎导致了问题。
我在 2.2 中没有这些问题,目前我找不到任何解决方法。
我还尝试强行更新到 System.Runtime 4.3.1,但没有帮助。
在使用VS 2015构建ac#类库(.NET 4.0)时,我收到错误:PE映像不包含元数据.
我尝试了一些显而易见的东西:1.执行干净的整个解决方案2.重新启动Visual Studio并重建所有内容
奇怪的是,即使DLL构建和工作,这个恼人的错误仍然停留在构建输出的错误窗口中.
完整错误读取:读取c时出错:/XX/xxx/DEBUG/mylib.dll:PE映像不包含元数据.
有任何想法吗?
编辑:重新启动计算机后,错误消失了.这不是一个真正的解决方案,所以我没有回答我自己的问题,但至少它解决了一个恼人的错误.
我正在使用 VS2019 和 .NET CORE 2.2 我收到警告 AL1073
ALINK 警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器
我知道这与问题很接近:ALINK:警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器
但:
我在 .NET CORE 2.2 而不是 4.x
那里提出的解决方案不适用于 .NET 核心
特别是,试图添加:
<PropertyGroup>
<TargetFrameworkSDKToolsDirectory Condition=" '$(PlatformTarget)' == 'x64'">$(TargetFrameworkSDKToolsDirectory)\$(PlatformTarget)\
</TargetFrameworkSDKToolsDirectory>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
发出另一个警告
警告 MSB3084 任务试图在两个位置找到“al.exe”。1) 在基于 SdkToolsPath 生成的 "\x64\" 处理器特定目录下 2) 在 SDKToolsPath 属性指定的 "\x64\" 下 x86 特定目录。您可以通过执行以下操作之一来解决该问题:1) 将“SDKToolsPath”属性设置为 Microsoft Windows SDK 的位置。C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
真的很奇怪,因为根据警告,位置是一样的!
另外:我很乐意在构建设置中取消警告,因为我所有的单元测试都通过了,但是将 1073 添加到列表中对仍然出现的 AL1073 警告没有影响。
或者,警告提示:将“SDKToolsPath”属性设置为 Microsoft Windows SDK 的位置,我该怎么做?
更新回答评论:这很难在简单的设置中重现。该项目特别引用了几个 Github 项目(fo-dicom)。fo-dicom 库使用为 32 和 64 平台构建的图像库。我确实尝试设置为 64 …
我需要处理以下形式的传入请求: //ohif/study/1.1/series 请注意前面的额外斜杠
我的控制器签名是:
[Route("ohif/study/{studyUid}/series")]
[HttpGet]
public IActionResult GetStudy(string studyUid)
Run Code Online (Sandbox Code Playgroud)
如果我将传入请求修改为 /ohif/study/1.1/series 它工作正常
但是,当我使用 //ohif/study/1.1/series 时,路线未被命中
另外我还尝试了: [Route("/ohif/study/{studyUid}/series")] 和 [Route("//ohif/study/{studyUid}/series")]
两者都失败了。不幸的是,我无法更改传入的请求,因为它来自外部应用程序。有什么技巧可以处理这条路线吗?我正在使用 .NET Core 3.0。
更新注意: 我已激活日志记录,并且看到 asp.net core 正在分析路由,我收到消息:没有找到记录器 Microsoft.AspNetCore 的请求路径“//ohif/study/1.1/series”的候选者。路由.EndpointRoutingMiddleware
asp.net model-view-controller asp.net-core-mvc asp.net-core-2.0
有没有办法在jquery或JavaScript中轻松保存和恢复本地存储到文件?
有三种情况:
使用特定的本地存储进行测试
在此数据至关重要的某些特定情况下备份本地存储(我们希望保存,以防删除本地缓存)
从现有本地存储设置另一个浏览器.
我想插入一个只有默认值的行(我稍后会更新,因为我需要 ID 自动递增字段)
这适用于 SQL Server(如何插入仅具有默认值的记录?)
insert into myTable DEFAULT VALUES;
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能在 MySQL 中实现这一点:
我也试过:
insert into myTable;
Run Code Online (Sandbox Code Playgroud)
这失败了。我知道我可以使用标准的插入语法来解决,但是我的表中有很多列,所以如果存在简单的语法会很有帮助。
有没有一种简单的方法来获取 numpy 数组的连续元素的比率?
基本上类似于 numpy.diff(x) 的东西?
所以如果 x=[1,2,10,100 ...]
我想要 [0.5 ,0.2, 0.1 ...] 即 [x1/x2, x2/x3 , x3/x4]
我知道我可以通过移动和除法轻松做到这一点,但与 numpy.diff(x) 相比似乎很笨拙
我目前使用 NLog 并允许管理员用户使用变量在运行时设置级别,如下所示:
<logger name="*" minLevel="${var:myFileLevel}" writeTo="file" />
Run Code Online (Sandbox Code Playgroud)
我想知道这个记录器在运行时的级别(所以由于变量我无法从配置文件中获取它)
我可以轻松获得目标,如下所示:
Target target= LogManager.Configuration.FindTargetByName("file");
Run Code Online (Sandbox Code Playgroud)
但不幸的是,目标对象上没有相关方法来获取级别。是否可以在运行时获取日志级别?
有没有办法一般复制一行,特别是不指定所有列。
在我的情况下,我有一个大表,我想在其中复制除 ID 和其他一列之外的所有列。事实上,数据是在年初逐年复制的。该表有 50 多列,因此如果我不必指定所有列,那么更改架构会更加灵活和健壮。
这与问题密切相关:在更新一个字段时复制行
在那个问题中,Kevin Cline 的评论基本上是在问我的问题,但实际上没有为这种更一般的情况提供解决方案。
编辑以根据要求提供更多详细信息,以下是所需内容的示例:
-- setup test table
create table my_table(pk, v1,v2,v3,v4 ... v50) as
select 17 pk, 1 v1,2 v2,3 v3... 50 v50 from dual;
Run Code Online (Sandbox Code Playgroud)
在上表中复制行并将 pk 设置为 18,将 v2 设置为 10。
我有2张桌子
Table1
Year,Month, data
2017,1,2
2018,2,10
Table2
Year,Month,data2
2017,1,5
2019,2,2
Run Code Online (Sandbox Code Playgroud)
我正在尝试将这些表合并为 1 个表,其中我们从两个表中获取所有行,如下所示。
Year,Month,data,data2
2017 ,1,2,5
2018,2,10,NULL
2019,2,NULL,2
Run Code Online (Sandbox Code Playgroud)
似乎标准外连接在这里不起作用,我也不能使用 Union ALL 是否有某种外连接查询来完成此操作?