2015-07-21 72 views
0

我正在嘗試創建一個自託管服務作爲我的日誌在我的應用程序的中心點。所以我在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); 
     } 
    }); 

回答

1

好吧,我發現我的在本教程中回答!

http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En

我刪除了AJAX請求的薩姆數據,現在它完美地做自己的工作!

這是我的新的AJAX:

var obj = { 
    applicationName: "APP", 
    message: "MESS" 
} 

$.ajax({ 
    type: "POST", 
    url: "http://localhost:9001/api/messaging/log", 
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
    data: obj, 
    success: function(resp) { 
     console.log(resp); 
    }, 
    error: function(err) { 
     console.log(err); 
    } 
}); 

確定使用Fiddler我發現他,我是需要真正的ContentType是:

的contentType:「應用程序/ x-WWW的形式,進行了urlencoded;字符集= UTF-8「,

相關問題