Как передать большую строку json в web api ?
я пытаюсь передать большие данные json в web api, но web api получил null.
Web Api Config: <pre><system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="500000000" /> </webServices> </scripting> </system.web.extensions>
Что я уже пробовал:
вызывающий код c# :
using (System.Net.WebClient client = new System.Net.WebClient()) { client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.Headers[HttpRequestHeader.Accept] = "application/json"; var JSONRequest = Newtonsoft.Json.JsonConvert.SerializeObject(_mailContract); string _URL = string.Format("{0}{1}", _basicAddress, "api/Email/SendEmail"); var response = client.UploadString(_URL, "POST", JSONRequest); }
Код веб-Api:
[HttpPost, Route("api/Email/SendEmail")] public HttpResponseMessage SendEmail([FromBody]EmailModel EmailServices) { HttpResponseMessage response = new HttpResponseMessage(); try { if (EmailServices !=null) { List<System.Data.SqlClient.SqlParameter> list = new List<System.Data.SqlClient.SqlParameter>(); list.Add(new System.Data.SqlClient.SqlParameter("@SetupID", EmailServices.SetupID)); list.Add(new System.Data.SqlClient.SqlParameter("@ProjectId", EmailServices.ProjectID)); list.Add(new System.Data.SqlClient.SqlParameter("@EmailType", EmailServices.EmailType)); list.Add(new System.Data.SqlClient.SqlParameter("@EmailTo", EmailServices.EmailTo)); list.Add(new System.Data.SqlClient.SqlParameter("@EmailCC", EmailServices.EmailCC)); list.Add(new System.Data.SqlClient.SqlParameter("@EmailBCC", EmailServices.EmailBCC)); list.Add(new System.Data.SqlClient.SqlParameter("@EmailSubject", EmailServices.EmailSubject)); list.Add(new System.Data.SqlClient.SqlParameter("@EmailBody", EmailServices.EmailBody)); DbCalling.ExexuteSp("CreateEmailQueue", list.ToArray()); } } catch (Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Error in Getting For Sending Emails. " + ex.Message); } return response; }
j snooze
Вы проверили, что код работает с небольшим набором данных?
awaisshabir
да он прекрасно работает с небольшим набором данных но когда я помещаю большие данные то класс модели web api получает null
Nayan Ambaliya
Я думаю, что объект, который вы сериализуете при вызове веб-службы, имеет несоответствие свойств (орфографическая ошибка или несуществующее свойство) с объектом класса, который является входным для веб-метода.
Проверьте свойства, которые вы передаете как JSON в качестве входных данных
Это может быть правильно - но только одна точка отказа.
Richard Deeming
NB: То jsonSerialization
элемент не влияет на запросы WebApi. Это влияет только на ответы от старых служб WCF/WebService.
Для WebApi вам нужно посмотреть на system.web/httpRuntime/@maxRequestLength
(в килобайтах) и system.webServer/security/requestFiltering/requestLimits/@maxAllowedContentLength
(в байтах).