的我有這樣的控制器方法的數組:網絡API 2串響應返回爲字符
[HttpGet]
[Route("SystemCheck/PulseCheck")]
public HttpResponseMessage PulseCheck()
{
//this is a string
var pulseCheck = PulseCheckHelper.PulseCheck();
var response = Request.CreateResponse((HttpStatusCode.OK), pulseCheck);
return response;
}
響應回來爲: [ 「2」, 「2」, 「9」, 「9」 ]而不是「2299」
任何想法?
我也試圖像不同的變化:
[HttpGet]
[Route("SystemCheck/PulseCheck")]
[ResponseType(typeof(string))]
public string PulseCheck()
{
//this is a string
var pulseCheck = PulseCheckHelper.PulseCheck();
return pulseCheck;
}
但相同的結果。有沒有我錯過的WebApiConfig。我有其他應用程序可以使用相同的控制器方法代碼正常工作,但無法識別配置差異。
這是我WebApiConfig:
public static void Register(HttpConfiguration config)
{
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.MessageHandlers.Add(new Security.WebApi.AuthenticationHandler());
config.Services.GetFilterProviders().ToList().ForEach(provider => config.Services.Remove(typeof(System.Web.Http.Filters.IFilterProvider), provider));
config.Services.Add(typeof(System.Web.Http.Filters.IFilterProvider), new OrderedFilterProvider());
config.Filters.Add(new ExceptionHandlingAttribute());
config.Filters.Add(new InspectActionContextFilter());
config.Filters.Add(new NewRelicFilter());
config.Filters.Add(new EnableQueryAttribute
{
PageSize = DefaultPageSize,
EnsureStableOrdering = false
});
}
更新:好像罪魁禍首是WebApiConfig註冊下面的代碼:
config.Filters.Add(new EnableQueryAttribute
{
PageSize = DefaultPageSize,
EnsureStableOrdering = false
});
這是支持對所有控制器方法的OData查詢。如果我刪除這些行,然後我得到正確的迴應「2299」。現在我的問題是,如何禁用我的特定控制器方法的OData?
是否是答案? –
這對我來說不起作用,因爲我的消費者期望將單個字符串作爲響應,而不是鍵/值對。 :( –