Web Services Web服务请求出错:命名空间“”中的顶层XML元素“parameters”引用了不同的类型

2izufjch  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(212)

我使用Visual Studio工具导入了以下服务接口(它是一个WCF Web服务)。
Reference.cs
但是,当我尝试使用服务AuthenticateJAAS(执行Web服务)时,出现以下错误:
无效操作异常错误:命名空间“”中得顶层XML元素“parameters”引用不同得类型XAFProject.Module.WS.MCWFUsers.mcwfUsersGetUserGroupsIn与XAFProject. Module. WS. MCWFUsers. mcwfUsersAuthenticateJAASIn.请使用XML属性为元素或类型指定另一个XML名称或命名空间.
我无法变更命名空间或元素名称'parameters',因为它来自无法变更的WSDL(协力厂商)。当我从Reference.cs移除类别GetUserGroupsRequest和相关内容时,我可以使用Web服务AuthenticateJAAS而不会发生问题。产生的XML为:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <AuthenticateJAAS xmlns="http://services.senior.com.br">
      <user xmlns=""/>
      <password xmlns=""/>
      <encryption xmlns="">0</encryption>
      <parameters xmlns="">
        <flowInstanceID xsi:nil="true"/>
        <flowName xsi:nil="true"/>
        <pmUserName>******</pmUserName>
        <pmUserPassword>******</pmUserPassword>
      </parameters>
    </AuthenticateJAAS>
  </s:Body>
</s:Envelope>

有没有一种方法可以同时使用这两种方法/服务(AuthenticateJAAS + GetUserGroupsRequest)而不会出现任何错误?我在想,如果我使用名称空间前缀,我可能会设法同时使用这两种服务。
下面是我初始化客户端并执行服务的代码部分:

sapiens_SyncMCWFUsersClient mCWFUsersClient = new sapiens_SyncMCWFUsersClient(); 
mcwfUsersAuthenticateJAASIn parameters = new mcwfUsersAuthenticateJAASIn();
parametrosEntrada.pmUserName = "******";
parametrosEntrada.pmUserPassword = "******";
parametrosEntrada.pmEncrypted = 0;
AuthenticateJAASRequest request = new AuthenticateJAASRequest("", "", 0, parameters); 
AuthenticateJAASResponse response = mCWFUsersClient.AuthenticateJAAS(request);
zyfwsgd6

zyfwsgd61#

到目前为止,我通过在Reference.cs文件. [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=3, Name = "parameters")]中执行以下操作解决了我的问题。然后,我将字段名更改为除“parameter”之外的任何名称。在本例中,public MCWFUsers.mcwfUsersGetUserGroupsIn parametersGetUserGroups;这意味着它不会引用cs文件中的不同类型。
我改了这个:

[System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3")]
    [System.ServiceModel.MessageContractAttribute(WrapperName="GetUserGroups", WrapperNamespace="http://services.senior.com.br", IsWrapped=true)]
    public partial class GetUserGroupsRequest
    {
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=0)]
        public string user;
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=1)]
        public string password;
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=2)]
        public int encryption;
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=3)]
        public MCWFUsers.mcwfUsersGetUserGroupsIn parameters;
        
        public GetUserGroupsRequest()
        {
        }
        
        public GetUserGroupsRequest(string user, string password, int encryption, MCWFUsers.mcwfUsersGetUserGroupsIn parameters)
        {
            this.user = user;
            this.password = password;
            this.encryption = encryption;
            this.parameters = parameters;
        }
    }

对此

[System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3")]
    [System.ServiceModel.MessageContractAttribute(WrapperName="GetUserGroups", WrapperNamespace="http://services.senior.com.br", IsWrapped=true)]
    public partial class GetUserGroupsRequest
    {
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=0)]
        public string user;
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=1)]
        public string password;
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=2)]
        public int encryption;
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace= "", Order=3, Name = "parameters")]
        public MCWFUsers.mcwfUsersGetUserGroupsIn parametersGetUserGroups;
        
        public GetUserGroupsRequest()
        {
        }
        
        public GetUserGroupsRequest(string user, string password, int encryption, MCWFUsers.mcwfUsersGetUserGroupsIn parameters)
        {
            this.user = user;
            this.password = password;
            this.encryption = encryption;
            this.parametersGetUserGroups = parameters;
        }
    }

编辑:不,不幸的是,这并没有解决问题。我会继续尝试。

相关问题