在我的 ASP Net Core 应用程序中,我需要仅为特定控制器应用自定义中间件。
我找到了这个例子
app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
app.UseMiddleware();
});
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
如何检查请求路径是否包含特定路径而不是开头?
我正在使用 C# 和 Net Core 开发一些 REST API
我的存储库中有一个函数,它接受类型为 的参数IFormFile。
public async Task<bool> UploadFile(IFormFile file)
{
// do some stuff and save the file to azure storage
}
Run Code Online (Sandbox Code Playgroud)
此函数由控制器方法调用,该方法将上传的文件传递给它
public class FileController : Controller
{
public async Task<IActionResult> UploadDoc(IFormFile file
{
// Call the repository function to save the file on azure
var res = await documentRepository.UploadFile(file);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有另一个调用外部 API 的函数,该 API 将文件作为字节数组返回。我想使用该repository.UploadFile方法保存这个字节数组,但我无法将字节数组对象转换为IFormFile.
是否可以?
我正在使用EF Core,并且在保存新实体时遇到问题。
这是我的模特班
[Column("Id")]
public int ID { get; set; }
[Required]
[Column("Pratica", TypeName = "varchar(10)")]
public string PRATICA { get; set; }
[Column("Anno")]
public int ANNO { get; set; }
[Required]
[Column("Variante", TypeName = "varchar(2)")]
public string VARIANTE { get; set; }
Run Code Online (Sandbox Code Playgroud)
在这里,我创建并初始化一个新的PRAT对象:
var prat = new PRAT();
prat.PRATICA = "Prova";
prat.ANNO = 2000;
prat.VARIANTE = "0";
context.PRAT.Add(prat);
context.SaveChangesAsync();
Run Code Online (Sandbox Code Playgroud)
就在context.PRAT.Add(prat)行之后,如果我检查prat.ID成员,我会得到类似-2147482647的信息
在context.SaveChangesAsync之后,出现错误“当IDENTITY_INSERT设置为OFF时,无法在表'Prat'中为标识列插入显式值”
这是生成的SQL语句:
INSERT INTO [Prat] ([Id], [Anno], [Pratica], [Variante]) VALUES (@p0, @p1, @p2, @p3);
Run Code Online (Sandbox Code Playgroud)
如您所见,Id字段已添加到字段列表中,但此字段是Identity!
如果在context.SaveChangesAsync()之前设置
prat.ID = 0 …Run Code Online (Sandbox Code Playgroud)