在UPS 开发人员门户中,我创建了一个具有客户端 ID 和客户端密钥的应用程序。接下来,我想获取 OAuth 令牌,以便可以使用它来访问他们的其他 API。我正在根据规范创建令牌请求创建令牌请求,但收到以下错误:
\n{"response":{"errors":[{"code":"10400","message":"Invalid/Missing Authorization Header"}]}}\nRun Code Online (Sandbox Code Playgroud)\n该规范具有“试用”功能,您可以在其中获取测试令牌。它提示用户填写x-merchant-id参数和grant_type表单变量,并创建一个如下所示的curl 请求:
\ncurl -X POST "https://wwwcie.ups.com/security/v1/oauth/token" \n -H "accept: application/json" \n -H "x-merchant-id: {My_Client_Id_Goes_Here}" \n -H "Content-Type: application/x-www-form-urlencoded" \n -d "grant_type=client_credentials"\nRun Code Online (Sandbox Code Playgroud)\n对于 x-merchant_id,我使用了我的 app\xe2\x80\x99s 客户端 ID。不清楚 grant_type 的值是否应为短语client_credentials(该页面看起来这是唯一有效的值)还是 my app\xe2\x80\x99s 实际的客户端密钥。我都尝试过,但每次都出现相同的错误。
\n有上百万个关于如何使用其(旧式)API 密钥的示例,但除了上面链接的说明之外,几乎没有任何关于如何获取 OAuth 令牌的示例!
\n在 .Net Core 2.2 API 中,我尝试使用 Serilog 记录到 SQL Server,以利用其结构化日志记录功能。除了标准字段(Id、Timestamp、Level、Message、MessageTemplate、LogEvent)之外,我还需要在每个日志条目中捕获用户名和 IP 地址。我看过这篇文章,但我想在一个地方做这件事,这样开发人员就不必在每个日志语句中手动添加它。我的Startup.csctor 中有以下代码段:
public Startup(IConfiguration configuration)
{
_configuration = configuration;
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.Enrich.FromLogContext()
.Enrich.With<SerilogContextEnricher>()
.CreateLogger();
}
Run Code Online (Sandbox Code Playgroud)
该.Enrich.FromLogContext()调用使静态 LogContext 可供我在自定义中间件中添加自定义属性(用户名和 IP 地址),如下所示:
public class SerilogMiddleware
{
private static readonly ILogger Log = Serilog.Log.ForContext<SerilogMiddleware>();
private readonly RequestDelegate _next;
public SerilogMiddleware(RequestDelegate next)
{
this._next = next ?? throw new ArgumentNullException(nameof(next));
}
public async Task Invoke(HttpContext httpContext)
{
if (httpContext == null) throw new ArgumentNullException(nameof(httpContext)); …Run Code Online (Sandbox Code Playgroud) 我正在使用 EF Core 3.0 将数据从 SQL Server 存储过程获取到名为 的对象模型中Recipient。该Recipient模型定义了几个属性EnvelopeId和Name,这些属性不是从存储过程返回的。当我使用 调用存储过程时FromSqlInterpolated,收到错误消息
“FromSql”操作的结果中不存在所需的列“EnvelopeId1”
根据我在 EF Core 文档中读到的内容,我应该能够向[NotMapped]这些属性添加属性,并且 EF Core 应该能够在读取或写入数据库时忽略它们,对吗?不幸的是,这对我不起作用,我收到了上述错误。
如果我在存储过程中添加两列并删除[NotMapped]对象模型中的属性,则一切正常。这证明我的其他列/属性名称匹配正确并且没有任何拼写错误。
我已经看到使用DbQuery而不是 的建议DbSet,但它已被弃用,所以我不想使用它。我看到过使用两种不同对象模型的建议,其中一种的属性与存储过程结果集完全匹配,但这只会导致大量额外的模型。我在这里做错了什么?
我的对象模型:
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace MyNamespace.Models
{
public class Recipient
{
[Key]
public long RecipientId { get; set; }
[NotMapped]
public Guid? EnvelopeId { get; set; }
public string Type { get; set; }
public string UserId { …Run Code Online (Sandbox Code Playgroud)