我正在尝试向受保护的 API 发出请求,因此我需要向 HttpClient 添加授权请求标头,如下所示:
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token");
Run Code Online (Sandbox Code Playgroud)
但是如何从控制器获取身份验证令牌(“您的 Oauth 令牌”)?
PS:我已经通过了 Identity Server 4 的身份验证。在 AspNetCore 中开发的应用程序。
完整代码:
[Authorize] //Already authenticated
public IActionResult SomeControllerAction()
{
var claimsIdentity = User.Identity as ClaimsIdentity; //where is JWTToken??
var JWTTokne = "how to get?";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", JWTTokne);
var result = client.PostAsync("someurl", new StringContent(json, Encoding.UTF8, "application/json")).Result;
//more code to handle result....
}
return View();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从 OutLook Express 保存一个 .eml 文件,但保存的文件在某些行的末尾有字符“=”(等于)。
在源模式下编辑消息时,html 似乎正常,只需保存它并出现“=”。
这对我不利,因为我会在发送之前编辑我的应用程序中的 .eml。我必须找到 /BODY 标签并插入一个文本。一个例子:
</DIV></DIV></DIV></DIV></DIV><FONT=20
style=3D"FONT-STYLE: normal; FONT-FAMILY: calibri; COLOR: rgb(0,0,0); =
FONT-SIZE: small; FONT-WEIGHT: normal"=20
face=3DCalibri><A=20
target=3D_blank></A></FONT></DIV></DIV></DIV></DIV></DIV></DIV></DIV></BO=
DY></HTML>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我找不到主体,因为它被写成 BO=DY。
我尝试将它保存在各种编码中,但结果相同。为什么 OutLook 以这种方式保存它?
我正在尝试对现有数据库使用迁移,并创建一个新数据库(如果不存在)。
EF Core文档说:
如果在数据库已经存在时创建了初始迁移,则会生成数据库创建代码,但由于数据库已经与数据模型匹配,因此不必运行该代码。当您将应用程序部署到尚不存在数据库的另一个环境时,此代码将运行以创建您的数据库
我进行了初始迁移,它创建了一个上下方法来创建我的表。当我将其运行到新数据库(连接字符串中的新数据库名称)时,它将按预期创建数据库和表。
但是,如果我将其运行到现有数据库(不是由迁移创建的)上,则它在尝试创建已经存在的表的第一种启动方法上将失败,并且迁移将停止运行。
Docs说“不必运行”,但是迁移要做的第一件事就是尝试创建一个现有表。
如何防止迁移尝试创建现有表?迁移中是否内置了类似“如果不存在则创建”的内容?文档正确吗?它应该按预期/在文档中描述吗?
如果我做错了,与现有数据库和新数据库上的迁移一起使用的迁移策略是什么?
Dotnet Core版本:1.1。EFCore版本:1.1.2。
提前致谢。