¿Por qué ModelState.IsValid falla para mi método ApiController que tiene parámetros anulables?

Tengo un método ApiController que acepta varios parámetros, como por ejemplo:

    // POST api/files
    public HttpResponseMessage UploadFile
    (
        FileDto fileDto,
        int? existingFileId,
        bool linkFromExistingFile,
        Guid? previousTrackingId
    )
    {
        if (!ModelState.IsValid)
            return Request.CreateResponse(HttpStatusCode.BadRequest);

        ...
    }

Cuando publico esto estoy poniendo elFileDto objeto en el cuerpo de la solicitud, y los otros parámetros en la cadena de consulta.

Ya descubrí que no puedo simplemente omitir los parámetros anulables, necesito colocarlos en la cadena de consulta con un valor vacío. Por lo tanto, mi consulta tiene este aspecto cuando no quiero especificar un valor para los parámetros que admiten nulos:

http://myserver/api/files?existingFileId=&linkFromExistingFile=true&previousTrackingId=

Esto coincide con el método de mi controlador, y cuando se ejecuta el método, los parámetros que aceptan nulos son, de hecho,null (como es de esperar).

sin embargo, la llamada aModelState.IsValid devolucionesfalse, y cuando examino los errores, se queja de los dos parámetros que admiten nulos. (Los otros bits del modelo no tienen errores). El mensaje es:

Se requiere un valor pero no estaba presente en la solicitud.

¿Por qué cree que un valor fue requerido / no presente? Seguramente (a) un valor esno requerido para un nullable, y (b) un valor estaba (más o menos) presente - de una manera nula-ish?

Respuestas a la pregunta(2)

Su respuesta a la pregunta