我有一个用.Net 6创建的非常简单的ASP.Net WebAPI项目。
[HttpPost]
public async Task DoStuff(MyClass input)
{
// snip
}
其中MyClass
如下所示:
public class MyClass
{
public string MyData { get; set; }
}
将其发布到以前版本的ASP.NET中允许的DoStuff
方法:
{
MyData: null
}
但是现在,它给出了400响应,除非我将MyData声明为string?
而不是string
。我的问题是MyClass
类不能更改,所以我无法将MyData
更新为string?
类型。是否有办法禁用ASP.NET对MyClass属性进行的自动空值验证?将<Nullable>disable</Nullable>
添加到WebAPI项目的csproj文件中似乎没有任何作用。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Platforms>x64</Platforms>
<Nullable>disable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<NoWarn>1701;1702;1591</NoWarn>
<UserSecretsId>MyProject</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AnotherProject.csproj" />
</ItemGroup>
</Project>
3条答案
按热度按时间n6lpvg4x1#
这是C# 8 nullable reference types的一个特性,在.NET 6中默认启用。要关闭它,请在csproj文件中添加
<Nullable>disable</Nullable>
行。例如:另外,如果MyClass在另一个项目中,也要在那里添加
<Nullable>disable</Nullable>
。o7jaxewo2#
如果在csproj中禁用nullable,则在使用nullable运算符(?)时可能会导致警告。将以下代码添加到.editorconfig将允许您使用两种方法(nullable或non-nullable),而不会出现任何其他警告。
您可以在解决方案项目中编辑**.editorconfig文件。已在[*.{cs,vb}]**节末尾添加了以下行
qojgxg4l3#
另一种方法是,如果您使用了可为空的变量/属性/参数,那么在将可为空设置为disable时,您将收到另一个警告。
为了防止这种情况,同时也为了禁用可空警告,我建议使用选项“ANOTATIONS”,当您指定某个内容可空并且不使用它时,它会显示警告: