You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为FormFile实例设置ContentType时抛出NullReference异常

问题原因及解决方案

问题出在早期ASP.NET Core版本中,FormFile的构造函数不会自动初始化ContentDisposition属性,而ContentType的setter会直接访问ContentDisposition.MediaType,当ContentDisposition为null时就会抛出NullReference异常。

修复代码:

在设置ContentType之前,先手动初始化ContentDisposition:

private static IFormFile CreateTemporaryFile(string fileName, string contentType)
{
    byte[] bytes = Encoding.UTF8.GetBytes("Test content");

    var formFile = new FormFile(
        baseStream: new MemoryStream(bytes),
        baseStreamOffset: 0,
        length: bytes.Length,
        name: "Data",
        fileName: fileName);

    // 先初始化ContentDisposition,再设置ContentType
    formFile.ContentDisposition = new ContentDispositionHeaderValue("form-data")
    {
        Name = "Data",
        FileName = fileName
    };
    formFile.ContentType = contentType;

    return formFile;
}

另一种简化写法:

如果你使用的是ASP.NET Core 3.0及以上版本,也可以通过直接设置ContentDisposition的字符串形式来初始化:

formFile.ContentDisposition = $"form-data; name=\"Data\"; filename=\"{fileName}\"";
formFile.ContentType = contentType;

这样就能避免NullReference异常,因为此时ContentDisposition已被正确初始化,ContentType的setter可以安全访问其MediaType属性。

内容的提问来源于stack exchange,提问作者RedRose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:18:09