Utworzono usługę sieciową ASP.NET (asmx), aby umożliwić oprogramowaniu innej firmy połączenie z moim rozwiązaniem. Usługa działa dobrze po wywołaniu przy użyciu SOAP 1.1 lub poprzez formularz wywołania ASP.NET, gdy zostanie wywołana z serwera, na którym się znajduje.SOAP 1.2 daje złe żądanie, podczas gdy SOAP 1.1 działa
Więc na czym polega problem, strona łącząca obsługuje tylko SOAP 1.2, podczas wywoływania usługi internetowej przy użyciu SOAP 1.2 zwraca 400 Złe żądanie.
mam włączone SOAP 1.2 w pliku web.config:
<configuration>
<system.web>
<webServices>
<soapExtensionTypes>
<add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0" />
</soapExtensionTypes>
<protocols>
<add name="HttpSoap12" />
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>
</system.web>
</configuration>
używam rozszerzenia do innej części, starałem się go wyłączyć poprzez konfigurację konkretnej lokalizacji, ale to nie przyniosło żadnych rezultatów.
mam włączone śledzenie:
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.Web.Services.Asmx">
<listeners>
<add name="AsmxTraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="D:\Trace.log" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Web.Services.Asmx" value="Verbose" />
</switches>
</system.diagnostics>
Korzystanie klienta Chrome zaawansowane Resztę wysłać następującą prośbę:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<authenticateUser xmlns="http://services.kvh.nl/foo">
<username>kvh</username>
<password></password>
</authenticateUser>
</soap12:Body>
</soap12:Envelope>
co skutkuje 400 Bad Request i dodaje się wpis w dzienniku śledzenia :
System.Web.Services.Asmx Information: 0 : Calling IHttpHandlerFactory.GetHandler
Caller: System.Web.Services.Protocols.WebServiceHandlerFactory#6565889::GetHandler()
Request Host Address: 10.1.1.8
Request Host Name: lb03.kvh.local
Request Url: [POST] http://services.kvh.nl/Services/MyWebservice.asmx
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.1166408Z
Timestamp=9623920014337
System.Web.Services.Asmx Information: 0 : Calling XmlSerializer [Create XmlSerializer]
Method: System.Xml.Serialization.XmlSerializer#1912278872::FromMappings(System.Xml.Serialization.XmlMapping[]#40573663=[24], System.Security.Policy.Evidence#667347099=..)
Caller: System.Web.Services.Protocols.SoapServerType#31148249::.ctor(WWW.Services.MyWebservice#477438864=WWW.Services.MyWebservice, System.Web.Services.Configuration.WebServiceProtocols#63=HttpGet, HttpPost, Documentation, HttpPostLocalhost, AnyHttpSoap)
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.1478409Z
Timestamp=9623920106472
System.Web.Services.Asmx Information: 0 : Return from XmlSerializer [Create XmlSerializer]
Caller: System.Web.Services.Protocols.SoapServerType#31148249::.ctor(WWW.Services.MyWebservice#477438864=WWW.Services.MyWebservice, System.Web.Services.Configuration.WebServiceProtocols#63=HttpGet, HttpPost, Documentation, HttpPostLocalhost, AnyHttpSoap)
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.3038412Z
Timestamp=9623920433863
System.Web.Services.Asmx Information: 0 : Calling SoapExtension
Method: Microsoft.Web.Services2.WebServicesExtension#3391963::ProcessMessage(System.Web.Services.Protocols.SoapMessageStage#4=BeforeDeserialize)
Caller: System.Web.Services.Protocols.SoapServerMessage#31258077::RunExtensions(System.Web.Services.Protocols.SoapExtension[]#34069029=[1], System.Boolean#0=False)
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.3038412Z
Timestamp=9623920435703
System.Web.Services.Asmx Information: 0 : Return from SoapExtension
Caller: System.Web.Services.Protocols.SoapServerMessage#31258077::RunExtensions(System.Web.Services.Protocols.SoapExtension[]#34069029=[1], System.Boolean#0=False)
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.3506412Z
Timestamp=9623920542168
System.Web.Services.Asmx Warning: 0 : Exception caught in System.Web.Services.Protocols.SoapServerProtocolFactory#48477748::Create.
System.Xml.XmlException: Root element is missing.
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.3506412Z
Timestamp=9623920545216
System.Web.Services.Asmx Warning: 0 : Exception Details:
System.Xml.XmlException: Root element is missing.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlTextReader.Read()
at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read()
at System.Xml.XmlReader.MoveToContent()
at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent()
at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement()
at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Servic...
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.3506412Z
Timestamp=9623920548659
System.Web.Services.Asmx Error: 0 : Exception thrown in System.Web.Services.Protocols.WebServiceHandlerFactory#6565889::CoreGetHandler().
System.InvalidOperationException: Failed to handle request.
ProcessId=11272
LogicalOperationStack=
ThreadId=6
DateTime=2014-05-22T13:28:45.3506412Z
Timestamp=9623920549597
Mam googled do blisko szaleństwa, ale niestety nie byłem abl e znaleźć rozwiązanie.
Każda pomoc jest bardzo doceniana.
EDIT:
Niestety propozycja rAhuID za te usunąć mydłem 1.1 wsparcie to nie rozwiązuje problemu. Kontynuowałem i próbowałem nieco więcej opcji, takich jak czyszczenie wszystkich protokołów i dodawanie tylko HttpSoap12 i Dokumentacji, co wydaje się pogarszać sprawę. Następnie usunąłem wszystkie protokoły, które nie są wymagane. Wyjątek XmlException zniknął z dzienników, ale nadal dostaję 400 nieprawidłowych żądań :(
Przetestowałem na komputerze lokalnym (używając pliku hosts, aby można było użyć poprawnej nazwy hosta), aby wykluczyć serwer proxy jako problem .
Currrent web.config:
<protocols>
<!--
<clear />
<add name="Documentation" />
<add name="HttpSoap12" />
-->
<remove name="HttpGet" />
<remove name="HttpPost" />
<remove name="HttpPostLocalhost" />
<remove name="HttpSoap" />
</protocols>
Diagnostyka:.
System.Web.Services.Asmx Information: 0 : Calling IHttpHandlerFactory.GetHandler
Caller: System.Web.Services.Protocols.WebServiceHandlerFactory#31931339::GetHandler()
Request Host Address: 127.0.0.1
Request Host Name: web01.kvh.nl
Request Url: [POST] http://services.kvh.nl/services/MyWebservice.asmx
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:39.7977582Z
Timestamp=9802327858068
System.Web.Services.Asmx Information: 0 : Calling XmlSerializer [Create XmlSerializer]
Method: System.Xml.Serialization.XmlSerializer#1912278872::FromMappings(System.Xml.Serialization.XmlMapping[]#53221370=[24], System.Security.Policy.Evidence#656725186=..)
Caller: System.Web.Services.Protocols.SoapServerType#63548859::.ctor(WWW.Services.MyWebservice#445910576=WWW.Services.MyWebservice, System.Web.Services.Configuration.WebServiceProtocols#40=Documentation, HttpSoap12)
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:39.8445582Z
Timestamp=9802327942578
System.Web.Services.Asmx Information: 0 : Return from XmlSerializer [Create XmlSerializer]
Caller: System.Web.Services.Protocols.SoapServerType#63548859::.ctor(WWW.Services.MyWebservice#445910576=WWW.Services.MyWebservice, System.Web.Services.Configuration.WebServiceProtocols#40=Documentation, HttpSoap12)
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:39.9849585Z
Timestamp=9802328272841
System.Web.Services.Asmx Information: 0 : Calling SoapExtension
Method: Microsoft.Web.Services2.WebServicesExtension#59584177::ProcessMessage(System.Web.Services.Protocols.SoapMessageStage#4=BeforeDeserialize)
Caller: System.Web.Services.Protocols.SoapServerMessage#64042303::RunExtensions(System.Web.Services.Protocols.SoapExtension[]#63331368=[1], System.Boolean#0=False)
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:39.9849585Z
Timestamp=9802328273636
System.Web.Services.Asmx Information: 0 : Return from SoapExtension
Caller: System.Web.Services.Protocols.SoapServerMessage#64042303::RunExtensions(System.Web.Services.Protocols.SoapExtension[]#63331368=[1], System.Boolean#0=False)
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:39.9849585Z
Timestamp=9802328287199
System.Web.Services.Asmx Information: 0 : Calling RouteRequest
Method: System.Web.Services.Protocols.SoapServerType#63548859::GetMethod(System.String#768149269="http://services.kvh.nl/foo/authenticateUser")
Caller: System.Web.Services.Protocols.Soap12ServerProtocolHelper#31339276::RouteRequest()
Request Host Address: 127.0.0.1
Request Host Name: web01.kvh.nl
Request Url: [POST] http://services.kvh.nl/services/MyWebservice.asmx
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:40.0005585Z
Timestamp=9802328288057
System.Web.Services.Asmx Information: 0 : Return from RouteRequest
Caller: System.Web.Services.Protocols.Soap12ServerProtocolHelper#31339276::RouteRequest()
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:40.0005585Z
Timestamp=9802328288265
System.Web.Services.Asmx Information: 0 : Return from IHttpHandlerFactory.GetHandler
Caller: System.Web.Services.Protocols.WebServiceHandlerFactory#31931339::GetHandler()
ProcessId=15596
LogicalOperationStack=
ThreadId=10
DateTime=2014-05-23T11:13:40.0005585Z
Timestamp=9802328288464
Dziękuję bardzo, właśnie uratowałeś mi wiele frustracji! – mrexodia