C# SOAP Web服务时出现InvalidOperationException-但在开发人员计算机上工作
我有一个webservice类,它继承自C# SOAP Web服务时出现InvalidOperationException-但在开发人员计算机上工作,c#,web-services,soap,C#,Web Services,Soap,我有一个webservice类,它继承自SoapHttpClientProtocol [WebServiceBinding(Name = "gp_ws_mySoap", Namespace = "https://www.xxx/yyy/")] internal class WebserviceNestle : SoapHttpClientProtocol { public WebserviceNestle(string sUrl) : base() { Url =
SoapHttpClientProtocol
[WebServiceBinding(Name = "gp_ws_mySoap", Namespace = "https://www.xxx/yyy/")]
internal class WebserviceNestle : SoapHttpClientProtocol
{
public WebserviceNestle(string sUrl) : base()
{
Url = sUrl;
}
[SoapDocumentMethod("https://www.xxx/yyy/test",
RequestNamespace = "https://www.xxx/yyy/",
ResponseNamespace = "https://www.xxx/yyy/",
Use = SoapBindingUse.Literal,
ParameterStyle = SoapParameterStyle.Wrapped)]
public XmlNode test(string a, int b)
{
var results = Invoke("test", new object[] {
a,
b
});
return (XmlNode)results[0];
}
}
在我的开发计算机上,webservice调用可以工作,但是在生产中,我得到异常“系统。InvalidOperationException
:命名空间中名为“”的XML元素已存在于当前作用域中:
异常的堆栈跟踪是:
System.InvalidOperationException:模具
方法
卡恩·尼希特·弗莱克蒂耶特·沃登。-->System.InvalidOperationException:
Fehler beim Reflektieren von''。-->
System.InvalidOperationException:Das XML属性“”im命名空间
“我是阿克图伦·贝里希吗
沃汉登。Verwenden Sie XML属性,嗯,是Anden XML名称
order-名称空间für das元素anzugeben。
bei System.Xml.Serialization.XmlReflectionImporter.AddUniqueAccessor(INameScope
作用域,访问器(访问器)
bei System.Xml.Serialization.XmlReflectionImporter.AddUniqueAccessor(MemberMapping
成员,INameScope元素,INameScope属性,布尔值
i顺序)
bei System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[]
xmlReflectionMembers,字符串ns,布尔hasWrapperElement,布尔
rpc,布尔openModel,递归限制器)-Ende der
国际银行
bei System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[]
xmlReflectionMembers,字符串ns,布尔hasWrapperElement,布尔
rpc,布尔openModel,递归限制器)bei
System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(字符串
elementName,字符串ns,XmlReflectionMember[]成员,布尔值
hasWrapperElement、布尔rpc、布尔openModel、XmlMappingAccess
访问权限)
bei System.Web.Services.Protocols.SoapReflector.ImportMembersMapping(XmlReflectionImporter
xmlImporter,SoapReflectionImporter,soapImporter,布尔值
serviceDefaultIsEncoded、布尔rpc、SoapBindingUse、,
SoapParameterStyle参数样式,字符串元素名称,字符串
elementNamespace,布尔nsIsDefault,XmlReflectionMember[]成员,
布尔验证、布尔openModel、字符串键、布尔写访问)
bei System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo
methodInfo、布尔客户端、XmlReflectionImporter、xmlImporter、,
SoapReflectionImporter(soapImporter,字符串默认值)
如果不使用对象XML序列化程序,我的猜测是可行的 所以,如果您的一个属性必须包含一个自由字符串值,并且不是XML编码的,该怎么办。如果它包含与XMLBuilder引用属性值相同的引号字符,那么您可能会收到类似XML注入的内容 例如,您必须传递一个字符串[这就是我所说的“真正的问题”]。如果不对字符串进行XML编码,您将得到类似的结果,这意味着属性值在[a]字符之前关闭,从[a]到右边的所有内容都将成为XML指令,我不希望普通的XML解析器理解这些指令 如果使用XML编码的值,则会收到格式良好的XML(如果定义了“and”实体或它们的代码) 尝试使用分析服务响应。我发现问题:
我用了Confuser()为了保护应用程序,这导致了SoapHttpClientProtocol父类构造函数中的反射错误。我很难读取堆栈跟踪,请将您的机器语言更改为英语,现在是德语。在这两种情况下,您是否有办法捕获包含实际XML内容的soap信封?您可能会感兴趣查看开发和生产的区别。谢谢。问号也在stacktrace中?堆栈跟踪看起来是“无法反映方法-使用XML属性为元素指定另一个XML名称或命名空间”。它与传递给方法进行反射的XML文件相关,如有必要,显示XML内容(也请为不懂德语的人翻译堆栈跟踪)。捕获此异常后,您可能希望检查InnerException属性,以找出实际问题所在。。