我有一个 .Net Core Razor 页面应用程序,它尝试使用使用 Refit 创建的类库调用 .Net Core API。
我创建了一个 Refit API 接口,该接口使用以枚举作为属性类型之一的模型。
这是API端的接口片段:IPaymentAPI
interface
[Post("/recharge")]
Task<string> Recharge([Body] RechargeRequest request);
Run Code Online (Sandbox Code Playgroud)
这是请求模型: 该模型包含一个简单的 enum ELicenseType
。
public class RechargeRequest
{
public ELicenseType LicenseType{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
EL 许可证类型:
public enum ELicenseType
{
NotSpecified = 0,
Standard = 1,
Commercial = 2
}
Run Code Online (Sandbox Code Playgroud)
控制器中的API实现:
[HttpPost("recharge")]
public async Task<IActionResult> Recharge(
[FromBody] RechargeRequest request)
{
Recharge result = await _mediator.Send(_mapper.Map<RechargeCommand>(request));
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
调用此 Recharge 方法时,Refit 会抛出 ValidationApiException:
ValidationApiException: Response status …
Run Code Online (Sandbox Code Playgroud) 我们面临着与 Laurent 在视觉工作室社区提出的这个问题相同的问题:LINK。
问题:如果我们尝试调试 C++/CLI 项目,.Net Standard 库检查中定义的所有变量都会失败并显示以下消息:
无法解析对程序集“System.Runtime”中类型“System::ValueType”的引用。
编译项目时,会显示以下警告:
警告 C4691:“System::Object”:在未引用的程序集“netstandard”中需要引用类型,而是使用当前翻译单元中定义的类型
和
注意:此诊断发生在从程序集“AppLib.Calc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a58edc04d4501d54”中导入类型“App::Calc::Models::InputDataContext”时。
重现步骤:
我们有一个很大的 CLI 层,如果我们不能在调试时检查变量,这将是痛苦的。
所以我的问题是自提出问题以来已经过去了大约六个月,但尚未解决。我想知道是否有其他人遇到过同样的问题,如果有的话,有什么解决方法。
更新:刚刚从 Visual Studio 反馈系统收到以下评论。
此问题的修复程序已在内部实施并准备发布。一旦它可供下载,我们就会为您更新。
已解决:该问题现已由 Visual Studio 团队解决。
此问题的修复程序已发布!从https://visualstudio.microsoft.com/downloads/安装最新版本。感谢您提供有助于改进产品的宝贵反馈。
visual-studio visual-c++ visual-studio-debugging visual-studio-2017 .net-standard
我在 Asp.Net Core 3.1 API 中使用 NewtonSoft.json 和 Swashbuckle.AspNetCore 版本 5.3.3。
默认情况下,在 Asp.Net Web API 中,2 个输入和输出参数大小写为 PascalCase。
现在我正在迁移到 .Net Core API,其中默认情况下是驼峰式大小写。
因此,我通过在 Startup.cs 中添加以下代码将其更改为使用 PascalCase:
services.AddControllers()
.ConfigureApiBehaviorOptions(options =>
{
options.SuppressModelStateInvalidFilter = true;
})
.AddNewtonsoftJson(options =>
{
// Use the default property (Pascal) casing
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});//Configure Newtonsoft as JSON serializer.
Run Code Online (Sandbox Code Playgroud)
但是在 Swagger UI 中,它以驼峰命名显示输入和输出参数,而 API 的响应包含以 PascalCase 显示的值。
我用谷歌搜索但在 AddSwaggerGen DescribeAllParametersInCamelCase() 中找到了一个方法,它将所有参数转换为驼峰式大小写。
是否有 DescribeAllParametersInPascalCase() 方法?
如何配置 Swagger/Swashbuckle 以在 PascalCase 中显示输入/输出参数?
下面是一个例子:
swagger swashbuckle asp.net-core asp.net-core-webapi swashbuckle.aspnetcore
我正在使用 MongoDB Compass 版本 1.25.0。
我试图使用 MongoDB Compass 的“插入文档”功能插入一位同事共享的文档。
我认为它正在验证 JSON 格式,而 ObjectId() 不是有效的 JSON 值。
我知道 Compass 会自动创建 ObjectId() 但我想显式传递它。
我求助于 Shell,并且能够插入文档。
我的问题是 MongoDB Compass 是否允许从 UI 输入 ObjectId() ?如果是,我做错了什么?
即使在注册 AddDefaultIdentity 后,我也遇到异常
System.InvalidOperationException: Service type: IUserClaimsPrincipalFactory`1 not registered.
Run Code Online (Sandbox Code Playgroud)
这是身份注册码:
services.AddDefaultIdentity<ApplicationUser>(options =>
{
//Disable account confirmation.
options.SignIn.RequireConfirmedAccount = false;
options.SignIn.RequireConfirmedEmail = false;
options.SignIn.RequireConfirmedPhoneNumber = false;
})
.AddEntityFrameworkStores<ApplicationDbContext>();
Run Code Online (Sandbox Code Playgroud)
这是 IdentityServer 代码:
var builder = services.AddIdentityServer()
.AddInMemoryApiScopes(IdentityServerConfig.ApiScopes)
.AddInMemoryIdentityResources(IdentityServerConfig.IdentityResources)
.AddInMemoryApiResources(IdentityServerConfig.ApiResources)
.AddInMemoryClients(IdentityServerConfig.Clients)
.AddAspNetIdentity<IdentityUser>();
Run Code Online (Sandbox Code Playgroud)