[SOLVED] Disable null validation in ASP.Net 6 project

Issue

I have a really simple ASP.Net WebAPI project created in .Net 6. Given this controller method:

[HttpPost]
public async Task DoStuff(MyClass input)
{
   // snip
}

where MyClass looks like this:

public class MyClass
{
    public string MyData { get; set; }
}

Posting this to the DoStuff method used to be allowed in previous versions of ASP.Net:

{
    MyData: null
}

Now however, it gives a 400 response unless I declare MyData as a string? instead of a string. My problem is that the MyClass class can not be altered, so I can’t update MyData to be of type string?. Is there a way to disable the automatic null validation that ASP.Net does on MyClass properties? Adding <Nullable>disable</Nullable> to the csproj file for the WebAPI project doesn’t seem to do anything. My current csproj looks like this:

<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>

Solution

This is a feature of C# 8, nullable reference types and in .NET 6 they are enabled by default. To turn it off, in your csproj file add this line <Nullable>disable</Nullable>. For example:

<PropertyGroup>
  <Nullable>disable</Nullable>
</PropertyGroup>

Also, if MyClass is in another project, add <Nullable>disable</Nullable> there as well.

Answered By – DavidG

Answer Checked By – Gilberto Lyons (BugsFixing Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *