ASP.NET Core .NET 8 receives null form values from certain iPhone 13 Pro Max devices

Ibrahim Akuetiemhe 0 Reputation points
2026-10-29T09:15:57.76+00:00

I am troubleshooting a device-specific issue with multipart form data submission in my ASP.NET Core .NET 8 application.

Application details

The frontend uses vanilla JavaScript fetch with the FormData API to submit customer information and uploaded files. The backend is a C# ASP.NET Core controller action that accepts the request using FromForm model binding.

Problem

Two iPhone 13 Pro Max devices running iOS 27 fail to submit the form correctly. The browser-side diagnostic confirms that the form data contains the expected values before submission, but the backend receives null values.

The issue is inconsistent across devices. One of the two iPhone 13 Pro Max devices works against my local development server, while the other fails. some iPhone including XR and a substantial number of Android devices have submitted successfully in my testing.

I have tested both Safari and Chrome on the affected iPhone, with the same result.

Troubleshooting performed

Changed hosting from SmarterASP to AWS EC2. The issue persisted.

Changed the local development server from Kestrel to IIS Express. The issue persisted.

Tested the application locally and on the hosted environments.

Verified that the expected data exists in the browser before the request is submitted.

Technical environment

Backend: ASP.NET Core .NET 8 Frontend: Vanilla JavaScript fetch and FormData Request format: multipart/form-data Model binding: C# FromForm Affected devices: Two iPhone 13 Pro Max devices running iOS 27 Successful devices: iPhone XR and numerous Android devices

Question

What could cause multipart form data submitted from specific iPhone devices to arrive with null values in an ASP.NET Core .NET 8 controller when other iPhones and Android devices work correctly?

What diagnostics would help determine whether the problem is caused by the request generated by the browser, multipart encoding or transmission, or ASP.NET Core model binding?

I can provide the JavaScript submission code, DTO, controller action, and further diagnostic logs if needed.

Developer technologies | ASP.NET Core | Other
0 comments No comments

6 answers

Sort by: Newest
  1. Nguyen Dam (WICLOUD CORPORATION) 1,420 Reputation points Microsoft External Staff Moderator
    2026-10-29T10:57:40.5366667+00:00

    Hello @Ibrahim Akuetiemhe and thank you for reaching out.

    The behavior differs even between similar iPhone devices so I would suggest first determining whether the form values are already missing when ASP.NET Core parses the request, or whether they are present and only become null during model binding.

    You can temporarily bypass the DTO with a diagnostic endpoint, for example:

    [HttpPost("diagnose-upload")]
    public async Task<IActionResult> DiagnoseUpload()
    {
        var request = Request;
    
        if (!request.HasFormContentType)
        {
            return BadRequest(new
            {
                request.ContentType,
                request.ContentLength
            });
        }
    
        var form = await request.ReadFormAsync();
    
        return Ok(new
        {
            request.ContentType,
            request.ContentLength,
            FormValues = form.ToDictionary(
                item => item.Key,
                item => item.Value.ToArray()),
            Files = form.Files.Select(file => new
            {
                file.Name,
                file.FileName,
                file.ContentType,
                file.Length
            })
        });
    }
    

    Compare the result from a working device with the affected iPhone

    • Values are missing/incorrect in Request.Form -> the issue is before model binding. Compare the requests from both devices, including the form data, Content-Type, multipart boundary, files, and payload.
    • Values are correct in Request.Form but null in [FromForm] -> the issue is likely with model binding or the DTO. Check ModelState for binding errors.

    If possible, please provide the JavaScript submission code, DTO, controller action, and the diagnostic results from both a working and affected device. These should help identify where the values are being lost.

    Hopefully, this should help narrow down the root cause. If you found my response helpful or informative, I would greatly appreciate it if you could follow this guide for your confirmation. Thank you.

    Was this answer helpful?

    1 person found this answer helpful.

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.