ASP.NET无法解析xml!检查文件路径

时间:2016-02-12 15:40:15

标签: c# asp.net asp.net-mvc api

我通过ASP.NET MVC 4创建了一个简单的API:

public class ActionController : ApiController
{
    [WebMethod]
    public string getCommunities()
    {
        try
        {
            MethodClass method = new MethodClass();
            return method.getCommunities();
        }
        catch(Exception ex)
        {
            return ex.Message.ToString();
        }
    }
}

试图在Method类中调用此方法:

public string getCommunities()
{
    return "bbb";
}

但无论出于何种原因,我都会收到此错误:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">cannot parse xml! Check file path</string>

我尝试使用谷歌搜索错误,但没有提出任何问题,有没有人见过这个错误?以及如何修复它?

3 个答案:

答案 0 :(得分:5)

正如评论中已经指出的那样,您正在寻找错误位置的错误。 method.getCommunities()抛出错误消息&#34;无法解析xml!检查文件路径&#34;。

在Google上搜索你的error我觉得你在抛出一个自定义异常:在代码中搜索该字符串可能会指向正确的位置。

作为概念的快速证明,我更改了Visual Studio Web API模板生成的标准API。

public string Get(int id)
        {
            try
            {
                var t = 0;
                var i = 1 / t;
                return "bbb";
            }
            catch { return "ABBA"; }
        }

确切地将自定义错误消息作为xml字符串

返回
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">ABBA</string>

答案 1 :(得分:2)

我尝试通过在ASP.Net MVC 4模板中创建简单的ActionController.cs来复制您提到的案例,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Services;

namespace MvcApiApplicationTrial1.Controllers
{
  public class ActionController : ApiController
  {
    [WebMethod]
    public string getCommunities() {
      try {
        MethodClass method = new MethodClass();
        return method.getCommunities();
      } catch (Exception ex) {
        return ex.Message.ToString();
      }
    }
  }

  public class MethodClass
  {
    public string getCommunities() {
      return "bbb";
    }
  }
}

使用以下网址在网络浏览器(Chrome)中调用它:

http://localhost:56491/api/Action/getCommunities

并获得以下正确结果:

enter image description here

如果你声明,定义和调用正确的东西,你的代码应该有 no 问题。

所以,我建议你重新检查你的声明,定义,以及再次调用相关的Controller / Method。你的问题可能存在于其他地方。

由于错误似乎是一个自定义错误,从单独发布的代码判断,可能是问题出现在getCommunities方法的某处。检查方法,尝试找到&#34;无法解析xml!&#34;那里的文字。或者,但不太可能,错误在MethodClass构造函数中。同样的事情,检查你的MethodClass,尝试找到&#34;无法解析xml!&#34;文本。

至于您在问题中发布的给定案例,我发现没有任何问题。

try和&#34; bbb&#34;之间还有其他任何内容。也可能是创建错误的来源。如果try块中有更多内容并且我不确定实际生成错误的位置,那么检查错误文本将是我的第一步。

答案 2 :(得分:0)

Global.asax.cs中的

应该放下代码:

GlobalConfiguration.Configuration.Formatters.Clear(); GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter());

以及WebApiConfig代码:

config.Formatters.XmlFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue(“text / xml”)); var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t =&gt; t.MediaType ==“application / xml”);