簡體   English   中英

沒有MediaTypeFormatter可用於從媒體類型為“文本/純文本”的內容中讀取“產品”類型的對象

[英]No MediaTypeFormatter is available to read an object of type 'Product' from content with media type 'text/plain'

我收到“沒有MediaTypeFormatter可用於從媒體類型為“文本/純文本”的內容中讀取類型為“產品”的對象”的控制台錯誤,當我嘗試使用ASP.NET WEBAPI將表單數據發布到JSON文件時

我沒有在這里發布我的html文件,因為html中沒有錯誤。 發送請求時出現錯誤。

請幫助我,因為我現在陷入困境,無法繼續前進。

控制器調用Post方法:

var promisePost = crudService.post(Product);        
promisePost.then(function (pl) {   
    $scope.ProductName = pl.data.ProductName;   
    //loadRecords();   
}, function (err) {   
    console.log("Err" + err);   
});    

服務中的過帳方法:

this.post = function (Product) {  
    var request = $http({  
        method: "post",  
        url: "http://localhost:50326/api/Products/",  
        data: Product,  
        contentType: 'application/json; charset=utf-8'  
        //Content-Type: application/json  
    });  
    return request;   
}

WebApi方法:

public void Post([FromBody]Product product)  
{  
    ProductsRepository repository = new ProductsRepository();  
    var newproduct = repository.Save(product);    
    //return newproduct;  
}  

internal Product Save(Product product)  
{  
    var products = this.Retrieve();  
    var maxId = products.Max(p => p.ProductId);  
    product.ProductId = maxId + 1;  
    products.Add(product);  
    WriteData(products);  
    return product;  
}

private bool WriteData(List<Product> products)  
{  
    var filePath =   HostingEnvironment.MapPath(@"~/App_Data/Products.json");  

    var json = JsonConvert.SerializeObject(products,   Formatting.Indented);  
    System.IO.File.WriteAllText(filePath, json);  

    return true;  
}

嘗試通過以下方式發布數據:

$http.post(
   'http://localhost:50326/api/Products/',
   JSON.stringify(Product),
   { 
      headers: { 
         'Content-Type': 'application/json'
      }
   }
);

請注意,您無需指定char編碼(我從未見過Contet-Type標頭中包含該部分。請參見: “ Content-type:application / json; charset = utf-8”的含義是什么?是什么意思?

還要注意,使用JSON.stringify將參數序列化為JSON以確保格式正確。

在API Formatter中

SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"));
SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/plain")); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM