我正在使用 ASP.Net Core 2.2。我从返回 XML 结果的 API 获取数据。但是当 MyController 想要加载text
变量时,它会因此错误而中断
IOException: The filename, directory name, or volume label syntax is incorrect : 'I:\Web Development\tamrin\Pizza\Pizza\<ProductType xmlns:i="http:\www.w3.org\2001\XMLSchema-instance" xmlns="http:\schemas.datacontract.org\2004\07\MyApi.Core.Models"><Id>2<\Id><Image>\images\burger.png<\Image><Name>Hamburger<\Name><\ProductType>'
这是我的控制器
public async Task<IActionResult> Index()
{
using (var httpClient = new HttpClient())
{
using (var response = await httpClient.GetAsync("https://localhost:44374/api/productTypes/2"))
{
string text = await response.Content.ReadAsStringAsync();
XmlDocument doc = new XmlDocument();
doc.Load(text); //app breaks here
doc.Deserialize<ProductType>();
}
}
return View("index");
}
这是方法text
参数时的内容doc.load(text)
。(在调试模式下)
"<ProductType xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MyApi.Core.Models\"><Id>2</Id><Image>/images/burger.png</Image><Name>Hamburger</Name></ProductType>"
这是我在 MYController 中使用的Deserilize扩展方法(我认为这是不必要的,因为应用程序在进入阶段之前就中断了)
public static class XmlDeserilizer
{
public static T Deserialize<T>(this XmlDocument document)
where T : class
{
XmlReader reader = new XmlNodeReader(document);
var serializer = new XmlSerializer(typeof(T));
T result = (T)serializer.Deserialize(reader);
return result;
}
}
如果您需要更多信息,请在评论中告诉我。
Load()
需要一个文件名。您需要使用LoadXml()
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句