我通过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>
我尝试使用谷歌搜索错误,但没有提出任何问题,有没有人见过这个错误?以及如何修复它?
答案 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
并获得以下正确结果:
如果你声明,定义和调用正确的东西,你的代码应该有 no 问题。
所以,我建议你重新检查你的声明,定义,以及再次调用相关的Controller / Method。你的问题可能存在于其他地方。
由于错误似乎是一个自定义错误,从单独发布的代码判断,可能是问题出现在getCommunities
方法的某处。检查方法,尝试找到&#34;无法解析xml!&#34;那里的文字。或者,但不太可能,错误在MethodClass
构造函数中。同样的事情,检查你的MethodClass
,尝试找到&#34;无法解析xml!&#34;文本。
至于您在问题中发布的给定案例,我发现没有任何问题。
但try
和&#34; bbb&#34;之间还有其他任何内容。也可能是创建错误的来源。如果try
块中有更多内容并且我不确定实际生成错误的位置,那么检查错误文本将是我的第一步。
答案 2 :(得分:0)
应该放下代码:
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”);