У меня есть форма, в которой есть некоторые данные, и возможность выбора нескольких файлов может быть файл за файлом или несколькими файлами одновременно или их комбинацией, и отправлять запрос в мой API, но если я сделаю свое действие после публикации, имеет параметр модели и я хочу, чтобы запрос совпадал с действием и связывал данные с моей моделью, но он не срабатывает вообще и дает мне
500 внутренняя ошибка сервера
и это исключение:
{"Сообщение": "Произошла ошибка.", "ExceptionMessage": "Ошибка при получении
значение из «ReadTimeout» в
"Microsoft.Owin.Host.SystemWeb.CallStreams.InputStream "" ExceptionType. ":" Newtonsoft.Json.JsonSerializationException " "StackTrace":"
в Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue (Object
цель) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues (JsonWriter
писатель, значение объекта, контракт JsonContainerContract, JsonProperty
член, свойство JsonProperty, JsonContract & memberContract, Object &
memberValue) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter
писатель, значение объекта, контракт JsonObjectContract, JsonProperty
член, JsonContainerContract collectionContract, JsonProperty
containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeDictionary (JsonWriter
писатель, значения IDictionary, контракт JsonDictionaryContract,
Член JsonProperty, коллекция JsonContainerContractContract,
JsonProperty containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter
писатель, значение объекта, контракт JsonObjectContract, JsonProperty
член, JsonContainerContract collectionContract, JsonProperty
containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter
писатель, значение объекта, контракт JsonObjectContract, JsonProperty
член, JsonContainerContract collectionContract, JsonProperty
containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeDictionary (JsonWriter
писатель, значения IDictionary, контракт JsonDictionaryContract,
Член JsonProperty, коллекция JsonContainerContractContract,
JsonProperty containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter
писатель, значение объекта, контракт JsonObjectContract, JsonProperty
член, JsonContainerContract collectionContract, JsonProperty
containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter
писатель, значение объекта, контракт JsonObjectContract, JsonProperty
член, JsonContainerContract collectionContract, JsonProperty
containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter
писатель, значение объекта, контракт JsonObjectContract, JsonProperty
член, JsonContainerContract collectionContract, JsonProperty
containerProperty) \ r \ n в
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize (JsonWriter
jsonWriter, значение объекта, тип objectType) \ r \ n в
Newtonsoft.Json.JsonSerializer.SerializeInternal (JsonWriter
jsonWriter, значение объекта, тип objectType) \ r \ n в
System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream (Тип
тип, значение объекта, поток writeStream, кодировка
эффективное кодирование) \ r \ n в
System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream (Тип
тип, значение объекта, поток writeStream, кодировка
эффективное кодирование) \ r \ n в
System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync (Тип
тип, значение объекта, поток writeStream, содержимое HttpContent,
TransportContext transportContext, CancellationToken
cancellationToken) \ r \ n --- Конец трассировки стека из предыдущего местоположения
где было сгенерировано исключение --- \ r \ n вSystem.Runtime.() "," InnerException ": {" Message ":" Произошла ошибка. "," ExceptionMessage ":" Тайм-ауты не поддерживаются в этом потоке. "," ExceptionType ":" System.InvalidOperationException "," StackTrace ":"at System.IO.Stream.get_ReadTimeout () \ r \ n в GetReadTimeout (Object) \ r \ n в Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue (Object target)"}}
Моя форма просмотра выглядит так:
Я отправляю данные формы с файлами из сервиса angularJs следующим образом:
var getModelAsFormData = function (data) {
var dataAsFormData = new FormData();
angular.forEach(data, function (value, key) {
if (key == "files") {
console.log(value);
for (var i = 0; i < value.length; i++) {
dataAsFormData.append(value[i].name, value[i]);
}
} else {
dataAsFormData.append(key, value);
}
});
return dataAsFormData;
};
var _saveModel = function (url, data) {
return $http({
url: url,
method: "POST",
data: getModelAsFormData(data),
headers: { 'Content-Type': undefined }
}).then(function (response) {
return response;
}).catch(function (e) {
throw e;
});
}
Определение контроллера API:
[HttpPost]
[Authorize(Roles = "Supervisor,Admin")]
public AnnouncementVM Add(AnnouncementVM announcementVM)
{
//my code here
}
ОбъявлениеVM Модель:
[DataContract()]
public class AnnouncementVM
{
[DataMember(Name = "title")]
[Required]
public string Title { get; set; }
[DataMember(Name = "content")]
public string Content { get; set; }
[DataMember(Name = "userGroupIds")]
public List<int> UserGroupIds { get; set; }
}
Мой отправленный запрос:
POST http://localhost:3436/services/api/Announcements/Add HTTP/1.1
Host: localhost:3436
Connection: keep-alive
Content-Length: 38535
Accept: application/json, text/plain, */*
Origin: http://localhost:3436
Authorization: Bearer JCaGaQQZUaZiZy2Dm5SZoUAR4SsUrdH-d30XltPlt5N9lF1NoE_IKt_s_CspyMcUAuNJgR6BWXcac3FWnCBd7AUYisR1DYZLE1P-CLLbtZceSx0EwEfIs72UDXeJkibcj2uAspICwuBAfbgx8c8TeVEqAomX3X5FXS7iyv6YYOeVjYmDp2QiWEnCH3_kIrKw8J1L1Zg-VQmTca195ovKSK-EUgWr7TwPAtoDQoBVM2Amr8HC968KRzlmJ46nd3LboSmNgyQr7wM0E0i58PNAOydngdzm5cb5rkpTFnDUIcl6upoxr6D4jgpefSE6X92yA-3PSNhOODSZFh1dDKocHg
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarynhBWcGW6vDoTgHdG
Referer: http://localhost:3436/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
------WebKitFormBoundarynhBWcGW6vDoTgHdG
Content-Disposition: form-data; name="userGroupIds"
17,18,19,17,18,19,17,18,19
------WebKitFormBoundarynhBWcGW6vDoTgHdG
Content-Disposition: form-data; name="title"
fkkf
------WebKitFormBoundarynhBWcGW6vDoTgHdG
Content-Disposition: form-data; name="content"
fkkfk
------WebKitFormBoundarynhBWcGW6vDoTgHdG
Content-Disposition: form-data; name="a.PNG"; filename="a.PNG"
Content-Type: image/png
PNG
....the rest of PNG data