【问题标题】:asp.net mvc api returning 'This XML file does not appear to have any style information associated with it. The document tree is shown below.'asp.net mvc api 返回“此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。
【发布时间】:2016-09-26 07:07:39
【问题描述】:

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

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

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

【问题讨论】:

  • 你能提供你的代码吗?你是如何返回数据的?控制台中显示的内容类型是什么?

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


【解决方案1】:

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;

【讨论】:

    【解决方案2】:

    默认情况下,Web api 应用程序没有接口。当您调用 Web api 时,您应该期望 response body 上的某些数据以指定的格式在客户端上读取。鉴于此,web api 将返回格式为xml 的内容,并且浏览器会显示它。

    当您没有xml内容的样式时,您发布的消息是浏览器的默认消息。它也发生在other platforms,因为它是浏览器的消息。

    如果您需要显示友好的界面,我建议您将asp.net web api application 更改为asp.net mvc application。您可以在同一个应用程序上同时使用两者,如果要显示用户界面,只需返回 View

    【讨论】:

      猜你喜欢
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2013-01-26
      相关资源
      最近更新 更多