Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML验证易受区域性信息的攻击?_C#_Xml Validation - Fatal编程技术网

C# XML验证易受区域性信息的攻击?

C# XML验证易受区域性信息的攻击?,c#,xml-validation,C#,Xml Validation,在项目结束的前一天,我遇到了一个复杂的问题:我有一个wtf服务和3个使用它的客户端应用程序。服务有三个方法,每个方法接收一个xml文档作为参数并返回xml文档。这就是他们沟通的方式。我有一些xsd文件要验证生成和接收的xml。直到今天一切都很顺利。我有波兰的windows,今天我在英语windows上运行我的应用程序。到目前为止,您可能已经意识到,我从应用程序收到一条消息,即接收到的xml无效。我检查了它,xml中被支持为double的VaR值是用句号(或coma,我不记得了,但它不起作用)编写

在项目结束的前一天,我遇到了一个复杂的问题:我有一个wtf服务和3个使用它的客户端应用程序。服务有三个方法,每个方法接收一个xml文档作为参数并返回xml文档。这就是他们沟通的方式。我有一些xsd文件要验证生成和接收的xml。直到今天一切都很顺利。我有波兰的windows,今天我在英语windows上运行我的应用程序。到目前为止,您可能已经意识到,我从应用程序收到一条消息,即接收到的xml无效。我检查了它,xml中被支持为double的VaR值是用句号(或coma,我不记得了,但它不起作用)编写的。 我现在想知道,这个问题有什么好的解决办法吗?我的意思是像这样验证xml:

public bool IsValid(XDocument xmlDocument, Stream xsdContent)
        {
            XmlSchemaSet schemaSet = new XmlSchemaSet();
            XmlReader reader = XmlReader.Create(xsdContent);
            schemaSet.Add(string.Empty, reader);

            valid = true;
            xmlDocument.Validate(schemaSet, (sender, eventt) => { valid = false; e
= eventt; });

            return valid;
        }
我无法告诉验证器double中的分隔符应该是什么。我能想到的唯一解决方案是在xsd中简单地指定有问题的VaR值是一个字符串,然后检查programmaticaly是否是带句点或逗号的双精度数字。

指定浮点数使用句点而不是逗号表示。区域设置对什么是有效的XML没有任何影响

你不包括你的错误。希望它在抱怨数字中有逗号