我正在嘗試創建一個自託管服務作爲我的日誌在我的應用程序的中心點。所以我在OWIN中創建自己託管的服務並安裝了我的服務。該服務工作正常,我可以通過JQuery通過AJAX調用使其通過GET方法工作。我的問題來自POST方法,因爲我想將很多字段發佈到WEB API(最好是一個包含所有內容的對象),但它根本不起作用...並且我收到此錯誤消息自己託管OWIN與CORS的WEB API
415 - >「不支持的媒體類型」
「請求包含一個實體主體但沒有Content-Type標頭,該資源不支持推斷的媒體類型'application/octet-stream'」,「ExceptionMessage」:「沒有MediaTypeFormatter可用於從媒體類型爲'application/octet-stream'的內容讀取'Log'類型的對象。「,」ExceptionType「:」System.Net.Http.UnsupportedMediaTypeException「,」StackTrace「:」at System。 Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent content,Type type,IEnumerable'1 formatters,IFormatterL ogger formatterLogger,的CancellationToken的CancellationToken個)\ r \ n在System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage請求,類型類型,IEnumerable`1格式化,IFormatterLogger formatterLogger,的CancellationToken的CancellationToken)」
我可以發送一個POST沒有參數,它的工作......但我需要這些參數!
這裏是我的代碼:
Log類
public class Log
{
public string Message { get; set; }
public string ApplicationName { get; set; }
}
WEB API控制器
public class MessagingController : ApiController
{
[HttpPost]
public void Log([FromBody] Log log)
{
var path = Program.ConfigurationService.GetConfigValue(ConfigurationService.RootPathConfig);
using (var writter = new StreamWriter(path + "TEST.txt"))
{
writter.Write(log.ApplicationName + " -> " + log.Message);
}
}
}
AJAX調用Web API
var obj = {
applicationName: "APP",
message: "MESS"
}
$.ajax({
type: "POST",
cache: false,
url: "http://localhost:9001/api/messaging/log",
data: JSON.stringify(obj),
dataType: 'json',
contentType: "application/json; charset=utf-8; Access-Control-Allow-Origin;",
async: true,
success: function(resp) {
console.log(resp);
},
error: function(err) {
console.log(err);
}
});