Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Web services Web服务命名空间问题_Web Services_.net 3.5_Soap_Namespaces - Fatal编程技术网

Web services Web服务命名空间问题

Web services Web服务命名空间问题,web-services,.net-3.5,soap,namespaces,Web Services,.net 3.5,Soap,Namespaces,我有一个由Java客户端调用的ASP.NET Web服务。客户端发送一条SOAP消息作为输入,但问题是它从未到达我的webservice方法。我总是得到空输入。我使用了TraceListener并看到了可能导致问题的警告: 此上下文中不需要该元素:。。。预期要素:。 这是客户端发送的内容: <?xml version="1.0" encoding="utf-8"?> <S:Envelope xmlns:S = "http://schemas.xmlsoap.org/soap/e

我有一个由Java客户端调用的ASP.NET Web服务。客户端发送一条SOAP消息作为输入,但问题是它从未到达我的webservice方法。我总是得到空输入。我使用了TraceListener并看到了可能导致问题的警告:

此上下文中不需要该元素:。。。预期要素:。

这是客户端发送的内容:

<?xml version="1.0" encoding="utf-8"?>
<S:Envelope xmlns:S = "http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:Listener xmlns:ns2 = "http://client.ns.url/">
            <ListenerInput>
                <errorCode>0</errorCode>
                <errorDescription>Success</errorDescription>
                <firstPrice xsi:nil = "true" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"/>
            </ListenerInput>
        </ns2:Listener>
    </S:Body>
</S:Envelope>
这是输入类:

[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://client.ns.url")]
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class ListenerInput
{
    public int errorCode;
    public string errorDescription;
    public float? firstPrice;
}
我该怎么解决这个问题?以下是一些跟踪日志:

Calling IHttpHandler.ProcessRequest
    Caller: System.Web.Services.Protocols.SyncSessionlessHandler#47754503::ProcessRequest()
    Request Host Address: xxx
    Request Url: [POST] http:/my.website/Listener.asmx
..
Calling XmlSerializer [Read Request]
    Method: Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer#53218107::Deserialize(System.Web.Services.Protocols.SoapServerProtocol+SoapEnvelopeReader#4153573=.., (null))
    Caller: System.Web.Services.Protocols.SoapServerProtocol#51389704::ReadParameters()
...
The element was not expected in this context: <ListenerInput>..</ListenerInput>. Expected elements: http://client.ns.url/:ListenerInput.
...
Return from XmlSerializer [Read Request]
    Caller: System.Web.Services.Protocols.SoapServerProtocol#51389704::ReadParameters()
...
 Calling ListenerResponse Listener(ListenerInput)
    Method: ListenerService#64693151::Listener((null))
    Caller: System.Web.Services.Protocols.SyncSessionlessHandler#47754503::Invoke()
调用IHttpHandler.ProcessRequest
调用方:System.Web.Services.Protocols.SyncSessionlessHandler#47754503::ProcessRequest()
请求主机地址:xxx
请求Url:[POST]http:/my.website/Listener.asmx
..
调用XmlSerializer[读取请求]
方法:Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer#53218107::反序列化(System.Web.Services.Protocols.SoapServerProtocol+SoapEnveloperReader#4153573=…(null))
调用者:System.Web.Services.Protocols.SoapServerProtocol#51389704::ReadParameters()
...
此上下文中不应包含元素:。。。预期要素:http://client.ns.url/:ListenerInput.
...
从XmlSerializer返回[读取请求]
调用者:System.Web.Services.Protocols.SoapServerProtocol#51389704::ReadParameters()
...
调用ListenerResponse侦听器(ListenerInput)
方法:ListenerService#64693151::Listener((null))
调用方:System.Web.Services.Protocols.SyncSessionlessHandler#47754503::Invoke()

解决了这个问题。当我应该使用自己的名称空间地址时,我正在使用客户端的名称空间地址。更改为:

[System.Web.Services.WebServiceBindingAttribute(Name = "ListenerWebServicePortSoapBinding", Namespace = "http://client.ns.url/")]
public partial class ListenerService : System.Web.Services.WebService
为此:

[System.Web.Services.WebServiceBindingAttribute(Name = "ListenerWebServicePortSoapBinding", Namespace = "http://my.ns.url/")]
public partial class ListenerService : System.Web.Services.WebService
[System.Web.Services.WebServiceBindingAttribute(Name = "ListenerWebServicePortSoapBinding", Namespace = "http://my.ns.url/")]
public partial class ListenerService : System.Web.Services.WebService