Я не уверен, что мне не хватает. Этот код прекрасно работает на моей локальной машине разработки, и когда я развернул его на тестовом сервере, он продолжает выдавать внутреннюю ошибку сервера или «Сообщение»: «Запрос содержит тело объекта, но не содержит заголовок Content-Type. Предполагаемый тип носителя 'application / octet-stream' не поддерживается для этого ресурса.
Я все здесь делаю правильно? Я просто вставляю простые данные студентов. Здесь одна функция webapi вставляет данные, собранные из двух объектов (Student и StudentAddress) Поэтому я сохраняю эти два объекта в модель и затем использую их в WebAPI.
Мне все еще интересно, как это работает на моей локальной машине. Я развернул все файлы на тестовом сервере.
Модель студента
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebAPI.Models
{
public class StudentModel
{
public Student Student { get; set; }
public StudentAddress StudentAddress { get; set; }
}
}
Контроллер студента
// POST: api/Student/InsertStudent
[ResponseType(typeof(StudentModel))]
[HttpPost]
public HttpResponseMessage InsertStudent(StudentModel studentModel)
{
objCSADBEntities.Student.Add(studentModel.Student);
objCSADBEntities.SaveChanges();
objCSADBEntities.StudentAddress.Add(studentModel.StudentAddress);
objCSADBEntities.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK, studentModel);
}
При нажатии кнопки «Отправить» звонит Angularjs отправить функция, которая имеет этот код
var Student = {
Name: $('#txt-FacilityLegalName').val().trim(),
LastDate: '2016-12-09 05:24:55.407',
SSMA_TimeStamp: '0x000000000778FCB1',
};
var StudentAddress = {
AddressLine1: $('#txt-MailingAddressLine1').val().trim(),
AddressLine2: ($('#txt-MailingAddressLine2').val().trim() != '' ? $('#txt-MailingAddressLine2').val().trim() : null),
City: $('#txt-City').val(),
State: $scope.objselectedstate.selectedstate.Value,
ZipCode: $('#txt-ZipCode').val().trim(),
ZipExt: ($('#txt-ZipExt').val().trim() != '' ? $('#txt-ZipExt').val().trim() : null),
FullName: $('#txt-ContactFirstName').val().trim() + ' ' + $('#txt-ContactLastName').val().trim(),
FirstName: $('#txt-ContactFirstName').val().trim(),
LastName: $('#txt-ContactLastName').val().trim(),
PhoneNumber: $('#txt-ContactPhone').val().trim(),
Ext: ($('#txt-ContactPhoneExt').val().trim() != '' ? $('#txt-ContactPhoneExt').val().trim() : null),
Fax: ($('#txt-ContactFax').val().trim() != '' ? $('#txt-ContactFax').val().trim() : null),
Email: $('#txt-Email').val().trim()
};
var studentModelModel = { studentAddress: StudentAddress, student: Student };
//Insert Student
var insertStudent = providerService.insertStudent($scope.webAPIHostName, studentModelModel);
insertStudent.then(function (response) {
//success response here
}, function (error) {
// error handling here
});
Angularjs Сервис. js
(function () {
var app = angular.module('myApp');
app.factory('studentService', ['$http', function ($http) {
var factory = [];
//Insert Student
factory.insertStudent = function (webAPIHostName, studentModel) {
var request = $http({
method: 'POST',
url: webAPIHostName + '/Provider/InsertStudent',
data: studentModel
})
return request;
}
return factory;
}
]);
})();
В консоли я вижу это Запрос и ответ
Request URL: http://localhost:5555/webapi/api/Student/InsertStudent
Request Method: POST
Status Code: 415 Unsupported Media Type
Referrer Policy: no-referrer-when-downgrade
Cache-Control: no-cache
Content-Length: 108
Content-Type: application/json; charset=utf-8
Date: Fri, 10 Jan 2020 23:50:25 GMT
Expires: -1
Pragma: no-cache
X-Frame-Options: SAMEORIGIN
X-UA-Compatible: IE=Edge
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 374
Content-Type: application/octet-stream; charset=UTF-8
Cookie: ASP.NET_SessionId=qaqikpomv1fuqlorb5difdxp