我使用实体框架制作了一个简单的net mvc web api,当我进行api调用时,我在chrome中遇到了这个错误:
在IE中此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。
这个错误没有出现,而是api的结果导致了json文件的下载......我希望设置响应,例如结果将出现在浏览器中,而不是作为下载,我该怎么做?
答案 0 :(得分:3)
在config.MapHttpAttributeRoutes();
下的WebApiConfig.cs中添加以下代码
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Application_Start()
函数中的Global.asax.cs添加以下内容
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
答案 1 :(得分:0)
默认情况下,web api应用程序没有界面。当您调用web api时,您应该期望在客户端上读取指定格式的response body
上的某些数据。鉴于此,web api返回格式化为xml
的内容,并且浏览器显示它。
当您没有xml内容的样式时,您发布的消息是浏览器的默认消息。它也发生在other platforms上,因为它是浏览器的消息。
如果您需要显示友好界面,建议您从asp.net web api application
更改为asp.net mvc application
。您可以将两者放在同一个应用程序上,并且在显示用户界面的情况下,只需返回View
。