【发布时间】:2009-12-06 17:01:30
【问题描述】:
我有点卡在这里。我正在为 Commerce Server 2009 开发一个自定义 Pipleline 组件,但这与我的问题无关。
在管道的设置中,我给用户一个windows窗体来输入一些值进行配置。其中一个值是 SharePoint 网站的 URL。 Commerce Server 在所有这些管道内容背后使用 C++ 组件,因此输入的值被放入一个 IDictionary 并最终通过 Microsoft 的 C++ 组件持久化到 DB。
当我在管道执行期间读入字符串时,它会在 C++ 的 IDictionary 对象中交给我。我的 C# 代码看到该 URL 以 \0\0 为后缀。我不确定这些来自哪里,但我的代码崩溃了,因为它不是有效的 URI。我在保存之前修剪字符串,并在阅读时修剪它,但仍然无法摆脱这些。
任何想法是什么导致了这种情况以及如何摆脱它?我不希望有像子字符串这样的黑客攻击,而是要找到根本原因。
谢谢, 科里
【问题讨论】:
-
\0 来自 C/C++ 中的字符串以 \0(又名 null)终止的约定。它们被称为“以空字符结尾的字符串”
-
您的 c# 代码是否定义了编组?你得到一个 IDictionary 所以有问题的字符串是从一个对象中转换出来的?可以将对象编组或以其他方式转换为适当的字符串。你能发布一些有问题的代码吗?
标签: c# c++ string unmanaged microsoft-commerce-server