asp.net mvc api return'此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。'

时间:2016-05-27 20:46:46

标签: c# asp.net asp.net-mvc entity-framework asp.net-web-api

我使用实体框架制作了一个简单的net mvc web api,当我进行api调用时,我在chrome中遇到了这个错误:

  

此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。

在IE中

这个错误没有出现,而是api的结果导致了json文件的下载......我希望设置响应,例如结果将出现在浏览器中,而不是作为下载,我该怎么做?

2 个答案:

答案 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