Отправить обнуляемый Guid на WebApi Asp.net - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть конечная точка веб-API с объявлением:

public async Task VisitorConnected(Guid? fingerprint, long property_id)

Иногда я хочу отправить null для первого параметра. Я прочитал один из потоков, чтобы отправить его как "null" в кавычках. Однако я получаю:

System.IO.InvalidDataException: Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked.
 ---> System.FormatException: The JSON value is not in a supported Guid format.
   at System.Text.Json.Utf8JsonReader.GetGuid()
   at System.Text.Json.Serialization.Converters.JsonConverterGuid.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
   at System.Text.Json.JsonPropertyInfoNullable`2.OnRead(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonPropertyInfo.Read(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)

Я пытался найти его в https://github.com/dotnet/corefx/blob/master/src/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.TryGet.cs#L940, но похоже, что Json Parser не обрабатывает этот случай null. Как я могу добиться этого, мой второй лучший вариант - отправить пустой Guid 000-00000000-00-000 ... из клиента javascript и проверить его на контроллере web api, но это похоже на взлом.

1 Ответ

2 голосов
/ 07 ноября 2019

Попробуйте изменить свой метод веб-API следующим образом:
public async Task VisitorConnected(long property_id, Guid? fingerprint = null)

Это позволит установить значение fingerprint в ноль, оставив property_id в качестве обязательного аргумента для вашего метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...