0

我试图在查询操作中将以下 XML 文本传递给 RIA 服务,该操作返回可查询的实体序列作为响应:

<?xml version="1.0" encoding="utf-8"?>
<project>
    <item type="Item" filetype="cabinet" category="EZ Workshop" name="EZW Panel Edge-Banded" height="24.000000" width="36.000000" depth="0.725000" quantity="1">
    </item>
    <item type="Item" filetype="cabinet" category="EZ Furniture" name="Entry Bench" height="19.000000" width="48.000000" depth="17.999999" quantity="1">
    </item>
    <item type="Item" filetype="cabinet" category="EZ Closet Euro Style" name="CSEKD Tall H3R 28-72W 12-24D" height="84.000000" width="54.000000" depth="19.999999" quantity="1">
    </item>
    <item type="Item" filetype="assembly" category="EZ Pro ManCave" name="EZ Corn Hole Game-Set" height="0" width="0" depth="0" quantity="1">
    </item>
    <item type="Item" filetype="assembly" category="EZ Office" name="EZ 30 Printer Stand" height="0" width="0" depth="0" quantity="1">
    </item>
    <item type="Item" filetype="assembly" category="Corporate Culture Pro" name="C-Table" height="0" width="0" depth="0" quantity="1">
    </item>
</project>

这是查询操作:

[Query]
public IQueryable<ProjectItem> GetItemsFromImport(String a_strImportXml)
{
    // Return empty sequence for now as a test.
    return new ProjectItem[0].AsQueryable();
}

当我传递完整的 XML 时,我得到了那个烦人的“未找到”异常,并且我的操作中的断点永远不会被击中。我正在使用 Visual Studio 2010 的 ASP.NET 开发服务器。当我得到“未找到”时,它预示着不好的事情。踢球者是,当我传递一个空字符串时,我根本没有任何异常,并且断点被击中。

正如您所见,它不是一个非常长的 XML 文档。发送的数据量是否有限制?我必须转义文档吗?

谢谢。

编辑:

我发现在发送文档之前,我只需要将结构字符('<'、'>' 和 '&')从文档中转义。我是String.Replace用来做的。有谁知道是否有更好的方法来实现这一点。可能类似于Uri.EscapeDataString

var strImportXml = a_xImport.ToString();
strImportXml = strImportXml.Replace("&", "&amp;");
strImportXml = strImportXml.Replace("<", "&lt;");
strImportXml = strImportXml.Replace(">", "&gt;");
4

1 回答 1

0

好的,所以我想这就是我自己问题的答案。我发现在发送文档之前,我只需要将结构字符('<'、'>' 和 '&')从文档中转义。我正在使用 String.Replace 来做到这一点。有谁知道是否有更好的方法来实现这一点。也许类似于 Uri.EscapeDataString 的东西?

var strImportXml = a_xImport.ToString();
strImportXml = strImportXml.Replace("&", "&amp;");
strImportXml = strImportXml.Replace("<", "&lt;");
strImportXml = strImportXml.Replace(">", "&gt;");

注意:我仍然想知道是否有更好的方法来做到这一点。

于 2012-07-13T20:42:34.107 回答