0

asp.net Web API(.net 4.5)のRequest.CreateResponseメソッドを使用して、PUT操作の後に応答を返そうとしています。

documentSession.SaveChanges();

// Http PUT response must return URI to created / updated resource  
// Line below throws exception                              
var response = Request.CreateResponse<T>(HttpStatusCode.Created, resource);
response.Headers.Location = new Uri(Request.RequestUri, pathToResource);
return response;

私の単体テストでは現在、このメソッドを使用してリクエストコンテキストを設定しています。

public static void SetupControllerContext(BaseApiController controller, HttpMethod method)
{                   
       controller.Request = new HttpRequestMessage(method, "http://localhost");
       //controller.Request.Headers.Add("Accept", "application/json");            
       var configuration = new System.Web.Http.HttpConfiguration(new System.Web.Http.HttpRouteCollection());            
       controller.Request.Properties["MS_HttpConfiguration"] = configuration;
}

例外(上記のRequest.CreateResponseメソッドでスローされます)は次 のとおりです。値の形式'application / json; charset =utf-8'は無効です。

スタックトレース:

 at System.Net.Http.Headers.MediaTypeHeaderValue.CheckMediaTypeFormat(String mediaType, String parameterName)
   at System.Net.Http.Headers.MediaTypeHeaderValue..ctor(String mediaType)
   at System.Net.Http.ObjectContent.BuildHeaderValue(String mediaType)
   at System.Net.Http.ObjectContent`1..ctor(T value, MediaTypeFormatter formatter, String mediaType)
   at System.Net.Http.HttpRequestMessageExtensions.CreateResponse[T](HttpRequestMessage request, HttpStatusCode statusCode, T value, HttpConfiguration configuration)
   at System.Net.Http.HttpRequestMessageExtensions.CreateResponse[T](HttpRequestMessage request, HttpStatusCode statusCode, T value)
   at SoftModel.UI.Html.Controllers.BaseApiController.SaveChanges[T](T resource, String pathToResource) in c:\Users\Us\Documents\Visual Studio 2010\Projects\SoftModel\SoftModel.UI.Html\Controllers\BaseApiController.cs:line 113
   at SoftModel.UI.Html.Controllers.InstanceController.Put(Record record) in c:\Users\Us\Documents\Visual Studio 2010\Projects\SoftModel\SoftModel.UI.Html\Controllers\InstanceController.cs:line 62
   at SoftModel.Tests.InstanceApiControllerTests.Put_Valid_Record_Returns_Record_URI() in c:\Users\Us\Documents\Visual Studio 2010\Projects\SoftModel\SoftModel.Tests\InstanceControllerTests.cs:line 69

MediaTypeHeaderValueのソースを確認しましたが、何が問題なのかわかりませんか?

4

1 に答える 1

-1

このように 聞こえますhttp://stackoverflow.com/questions/11988027/exceptions-with-webapi-request-formatting

編集:より良いページへの更新されたリンク

于 2012-10-06T03:35:03.220 に答える