Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Elastic.Apm.AspNetFullFramework crashes on some SOAP requests to ASP Net Web Service #1759

Closed
sabiland opened this issue Jul 19, 2022 · 20 comments
Assignees
Labels
agent-dotnet bug Something isn't working
Milestone

Comments

@sabiland
Copy link

APM Agent version

Elastic.Apm.AspNetFullFramework 1.16.1

Environment

C# ASP NET Web Service

.NET Framework 4.8

Describe the bug

Some SOAP requests (not all, just some) to ASP Net Web Service crash if I have agent enabled in web.config. All I did was integrate agent into our old Web Service. Could be something wrong with SOAP request (syntax, etc.)? But other clients (Java, etc.) have no problems calling this Web Service for several years.

Exception message:
System.Web.Services.Protocols.SoapException: There was an exception running the extensions specified in the config file. ---> System.InvalidOperationException: Either BinaryRead, Form, Files, or InputStream was accessed before the internal storage was filled by the caller of HttpRequest.GetBufferedInputStream. at System.Web.HttpRequest.GetEntireRawContent() at System.Web.HttpRequest.get_InputStream() at System.Web.Services.Protocols.SoapServerProtocol.Initialize() --- End of inner exception stack trace --- at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

@sabiland sabiland added the bug Something isn't working label Jul 19, 2022
@gregkalapos
Copy link
Contributor

Thanks for reporting @sabiland

Did you change any configuration of the agent? Based on the callstack it seems the exception happens when the content of the Http request is read - by default the agent doesn't do that, unless you turn on request body capturing. Docs on it here

So, it's be nice to know your agent configs to further troubleshoot.

Also - would it be possible to maybe create a small reproducer?

@z1c0
Copy link
Contributor

z1c0 commented Sep 8, 2022

@sabiland could you maybe share a reproducer for this issue?
I'm currently working on request body capturing for .NET Framework (#379) and this is most likely an interesting test case for that feature.

@sabiland
Copy link
Author

sabiland commented Sep 8, 2022

So I think, if I have APM enabled in web.config (via system.webServer tags), some incoming XML SOAP requests crash. I guess APM intercepts every request and tries to do something. But with some (not all) requests it crashes.

If it is any help, here is wsdl-xml (I've hidden some infos). I am sure it crashes on method TSMPReconfigureSTBDevices with some specific parameters combination (maybe something with nulls) - also not always.

EDIT: Damn, xml is badly code-formatted. Any way to fix it?

<wsdl:definitions
	xmlns:s="http://www.w3.org/2001/XMLSchema"
	xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
	xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
	xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
	xmlns:tns="http://tempuri.org/"
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://tempuri.org/">
	<wsdl:types>
		<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
			<s:element name="TTT">
				<s:complexType/>
			</s:element>
			<s:element name="TTTResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TTTResult"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="AAATestGenericMethod">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="adsl" type="s:string"/>
						<s:element minOccurs="1" maxOccurs="1" name="accountId" type="s:int"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="AAATestGenericMethodResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="AAATestGenericMethodResult" type="s:string"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="EnableVerimatrixLicenseForMAC">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_mac" type="s:string"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="EnableVerimatrixLicenseForMACResponse">
				<s:complexType/>
			</s:element>
			<s:element name="DisableVerimatrixLicenseForMAC">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_mac" type="s:string"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="DisableVerimatrixLicenseForMACResponse">
				<s:complexType/>
			</s:element>
			<s:element name="TSMPChangeFriendlyName">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_mac" type="s:string"/>
						<s:element minOccurs="0" maxOccurs="1" name="_friendlyName" type="s:string"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:complexType name="TSMPResponse">
				<s:sequence>
					<s:element minOccurs="1" maxOccurs="1" name="Success" type="s:boolean"/>
					<s:element minOccurs="0" maxOccurs="1" name="ErrMsg" type="s:string"/>
					<s:element minOccurs="1" maxOccurs="1" name="Duration" type="s:double"/>
					<s:element minOccurs="1" maxOccurs="1" name="TSMPActionID" type="s:int"/>
				</s:sequence>
			</s:complexType>
			<s:element name="TSMPChangeFriendlyNameResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPChangeFriendlyNameResult" type="tns:TSMPResponse"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPFastChannelListUpdate">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_STBDevices" type="tns:ArrayOfSimpleSTB"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:complexType name="ArrayOfSimpleSTB">
				<s:sequence>
					<s:element minOccurs="0" maxOccurs="unbounded" name="SimpleSTB" nillable="true" type="tns:SimpleSTB"/>
				</s:sequence>
			</s:complexType>
			<s:complexType name="SimpleSTB">
				<s:sequence>
					<s:element minOccurs="0" maxOccurs="1" name="MAC" type="s:string"/>
					<s:element minOccurs="0" maxOccurs="1" name="TVPackages" type="tns:ArrayOfString"/>
					<s:element minOccurs="1" maxOccurs="1" name="STBType" type="s:int"/>
					<s:element minOccurs="0" maxOccurs="1" name="FriendlyName" type="s:string"/>
				</s:sequence>
			</s:complexType>
			<s:complexType name="ArrayOfString">
				<s:sequence>
					<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string"/>
				</s:sequence>
			</s:complexType>
			<s:element name="TSMPFastChannelListUpdateResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPFastChannelListUpdateResult" type="tns:TSMPResponse"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPReconfigureSTBDevices">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_ADSLUsername" type="s:string"/>
						<s:element minOccurs="1" maxOccurs="1" name="_AccountID" type="s:int"/>
						<s:element minOccurs="0" maxOccurs="1" name="_STBDevices" type="tns:ArrayOfTSMPStbDevice"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:complexType name="ArrayOfTSMPStbDevice">
				<s:sequence>
					<s:element minOccurs="0" maxOccurs="unbounded" name="TSMPStbDevice" nillable="true" type="tns:TSMPStbDevice"/>
				</s:sequence>
			</s:complexType>
			<s:complexType name="TSMPStbDevice">
				<s:sequence>
					<s:element minOccurs="0" maxOccurs="1" name="MAC" type="s:string"/>
					<s:element minOccurs="1" maxOccurs="1" name="STBType" type="s:int"/>
					<s:element minOccurs="0" maxOccurs="1" name="Encoding" type="s:string"/>
					<s:element minOccurs="0" maxOccurs="1" name="FriendlyName" type="s:string"/>
					<s:element minOccurs="0" maxOccurs="1" name="TVPackages" type="tns:ArrayOfString"/>
					<s:element minOccurs="1" maxOccurs="1" name="SetVerimatrix" type="s:boolean"/>
					<s:element minOccurs="1" maxOccurs="1" name="IsSTBBlocked" type="s:boolean"/>
					<s:element minOccurs="1" maxOccurs="1" name="IsNewZeroTouchActivation" type="s:boolean"/>
					<s:element minOccurs="0" maxOccurs="1" name="Level2" type="s:string"/>
					<s:element minOccurs="0" maxOccurs="1" name="CatchupHoursInfo" type="s:string"/>
					<s:element minOccurs="0" maxOccurs="1" name="PackagesInfo" type="s:string"/>
				</s:sequence>
			</s:complexType>
			<s:element name="TSMPReconfigureSTBDevicesResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPReconfigureSTBDevicesResult" type="tns:TSMPResponse"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPBlockDeblockSTBDevices">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_STBDevices" type="tns:ArrayOfString"/>
						<s:element minOccurs="1" maxOccurs="1" name="_block" type="s:boolean"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPBlockDeblockSTBDevicesResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPBlockDeblockSTBDevicesResult" type="tns:TSMPResponse"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPDeleteSTBDevicesOnlyFromMACS">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_STBDevices" type="tns:ArrayOfString"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPDeleteSTBDevicesOnlyFromMACSResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPDeleteSTBDevicesOnlyFromMACSResult" type="tns:TSMPResponse"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPDeleteSTBDevices">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_ADSLUsername" type="s:string"/>
						<s:element minOccurs="1" maxOccurs="1" name="_AccountID" type="s:int"/>
						<s:element minOccurs="0" maxOccurs="1" name="_STBDevices" type="tns:ArrayOfString"/>
						<s:element minOccurs="1" maxOccurs="1" name="_deleteChannelList" type="s:boolean"/>
						<s:element minOccurs="1" maxOccurs="1" name="_finalDelete" type="s:boolean"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPDeleteSTBDevicesResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPDeleteSTBDevicesResult" type="tns:TSMPResponse"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPGetCurrentSituation">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="1" maxOccurs="1" name="_AccountID" type="s:int"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:complexType name="TSMPCurrentSituation">
				<s:sequence>
					<s:element minOccurs="0" maxOccurs="1" name="Res" type="tns:TSMPResponse"/>
					<s:element minOccurs="0" maxOccurs="1" name="STBDevices" type="tns:ArrayOfTSMPStbDevice"/>
					<s:element minOccurs="0" maxOccurs="1" name="ADSLUsername" type="s:string"/>
				</s:sequence>
			</s:complexType>
			<s:element name="TSMPGetCurrentSituationResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPGetCurrentSituationResult" type="tns:TSMPCurrentSituation"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPSecurityPackagesNewLicense">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="1" maxOccurs="1" name="_accountID" type="s:int"/>
						<s:element minOccurs="1" maxOccurs="1" name="_securityPackageType" type="s:int"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:complexType name="TSMPResponseSPData">
				<s:sequence>
					<s:element minOccurs="1" maxOccurs="1" name="Success" type="s:boolean"/>
					<s:element minOccurs="0" maxOccurs="1" name="ErrMsg" type="s:string"/>
					<s:element minOccurs="1" maxOccurs="1" name="Duration" type="s:double"/>
					<s:element minOccurs="1" maxOccurs="1" name="TSMPActionID" type="s:int"/>
					<s:element minOccurs="0" maxOccurs="1" name="Data">
						<s:complexType>
							<s:sequence>
								<s:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
								<s:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax"/>
							</s:sequence>
						</s:complexType>
					</s:element>
				</s:sequence>
			</s:complexType>
			<s:element name="TSMPSecurityPackagesNewLicenseResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPSecurityPackagesNewLicenseResult" type="tns:TSMPResponseSPData"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPSecurityPackagesActive">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="1" maxOccurs="1" name="_accountID" type="s:int"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPSecurityPackagesActiveResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPSecurityPackagesActiveResult" type="tns:TSMPResponseSPData"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPSecurityPackagesFreeLicense">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="_licenseKey" type="s:string"/>
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="TSMPSecurityPackagesFreeLicenseResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0" maxOccurs="1" name="TSMPSecurityPackagesFreeLicenseResult" type="tns:TSMPResponse"/>
					</s:sequence>
				</s:complexType>
			</s:element>
		</s:schema>
	</wsdl:types>
	<wsdl:message name="TTTSoapIn">
		<wsdl:part name="parameters" element="tns:TTT"/>
	</wsdl:message>
	<wsdl:message name="TTTSoapOut">
		<wsdl:part name="parameters" element="tns:TTTResponse"/>
	</wsdl:message>
	<wsdl:message name="AAATestGenericMethodSoapIn">
		<wsdl:part name="parameters" element="tns:AAATestGenericMethod"/>
	</wsdl:message>
	<wsdl:message name="AAATestGenericMethodSoapOut">
		<wsdl:part name="parameters" element="tns:AAATestGenericMethodResponse"/>
	</wsdl:message>
	<wsdl:message name="EnableVerimatrixLicenseForMACSoapIn">
		<wsdl:part name="parameters" element="tns:EnableVerimatrixLicenseForMAC"/>
	</wsdl:message>
	<wsdl:message name="EnableVerimatrixLicenseForMACSoapOut">
		<wsdl:part name="parameters" element="tns:EnableVerimatrixLicenseForMACResponse"/>
	</wsdl:message>
	<wsdl:message name="DisableVerimatrixLicenseForMACSoapIn">
		<wsdl:part name="parameters" element="tns:DisableVerimatrixLicenseForMAC"/>
	</wsdl:message>
	<wsdl:message name="DisableVerimatrixLicenseForMACSoapOut">
		<wsdl:part name="parameters" element="tns:DisableVerimatrixLicenseForMACResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPChangeFriendlyNameSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPChangeFriendlyName"/>
	</wsdl:message>
	<wsdl:message name="TSMPChangeFriendlyNameSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPChangeFriendlyNameResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPFastChannelListUpdateSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPFastChannelListUpdate"/>
	</wsdl:message>
	<wsdl:message name="TSMPFastChannelListUpdateSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPFastChannelListUpdateResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPReconfigureSTBDevicesSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPReconfigureSTBDevices"/>
	</wsdl:message>
	<wsdl:message name="TSMPReconfigureSTBDevicesSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPReconfigureSTBDevicesResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPBlockDeblockSTBDevicesSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPBlockDeblockSTBDevices"/>
	</wsdl:message>
	<wsdl:message name="TSMPBlockDeblockSTBDevicesSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPBlockDeblockSTBDevicesResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPDeleteSTBDevicesOnlyFromMACSSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPDeleteSTBDevicesOnlyFromMACS"/>
	</wsdl:message>
	<wsdl:message name="TSMPDeleteSTBDevicesOnlyFromMACSSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPDeleteSTBDevicesOnlyFromMACSResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPDeleteSTBDevicesSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPDeleteSTBDevices"/>
	</wsdl:message>
	<wsdl:message name="TSMPDeleteSTBDevicesSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPDeleteSTBDevicesResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPGetCurrentSituationSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPGetCurrentSituation"/>
	</wsdl:message>
	<wsdl:message name="TSMPGetCurrentSituationSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPGetCurrentSituationResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPSecurityPackagesNewLicenseSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPSecurityPackagesNewLicense"/>
	</wsdl:message>
	<wsdl:message name="TSMPSecurityPackagesNewLicenseSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPSecurityPackagesNewLicenseResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPSecurityPackagesActiveSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPSecurityPackagesActive"/>
	</wsdl:message>
	<wsdl:message name="TSMPSecurityPackagesActiveSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPSecurityPackagesActiveResponse"/>
	</wsdl:message>
	<wsdl:message name="TSMPSecurityPackagesFreeLicenseSoapIn">
		<wsdl:part name="parameters" element="tns:TSMPSecurityPackagesFreeLicense"/>
	</wsdl:message>
	<wsdl:message name="TSMPSecurityPackagesFreeLicenseSoapOut">
		<wsdl:part name="parameters" element="tns:TSMPSecurityPackagesFreeLicenseResponse"/>
	</wsdl:message>
	<wsdl:portType name="TSMediaProxySoap">
		<wsdl:operation name="TTT">
			<wsdl:input message="tns:TTTSoapIn"/>
			<wsdl:output message="tns:TTTSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="AAATestGenericMethod">
			<wsdl:input message="tns:AAATestGenericMethodSoapIn"/>
			<wsdl:output message="tns:AAATestGenericMethodSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="EnableVerimatrixLicenseForMAC">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enable Verimatrix license for _mac.
			</wsdl:documentation>
			<wsdl:input message="tns:EnableVerimatrixLicenseForMACSoapIn"/>
			<wsdl:output message="tns:EnableVerimatrixLicenseForMACSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="DisableVerimatrixLicenseForMAC">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Disable Verimatrix license for _mac.
			</wsdl:documentation>
			<wsdl:input message="tns:DisableVerimatrixLicenseForMACSoapIn"/>
			<wsdl:output message="tns:DisableVerimatrixLicenseForMACSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPChangeFriendlyName">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPChangeFriendlyName
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPChangeFriendlyNameSoapIn"/>
			<wsdl:output message="tns:TSMPChangeFriendlyNameSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPFastChannelListUpdate">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPFastChannelListUpdate
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPFastChannelListUpdateSoapIn"/>
			<wsdl:output message="tns:TSMPFastChannelListUpdateSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPReconfigureSTBDevices">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPReconfigureSTBDevices
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPReconfigureSTBDevicesSoapIn"/>
			<wsdl:output message="tns:TSMPReconfigureSTBDevicesSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPBlockDeblockSTBDevices">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPBlockDeblockSTBDevices
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPBlockDeblockSTBDevicesSoapIn"/>
			<wsdl:output message="tns:TSMPBlockDeblockSTBDevicesSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPDeleteSTBDevicesOnlyFromMACS">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPDeleteSTBDevicesOnlyFromMACS
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPDeleteSTBDevicesOnlyFromMACSSoapIn"/>
			<wsdl:output message="tns:TSMPDeleteSTBDevicesOnlyFromMACSSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPDeleteSTBDevices">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPDeleteSTBDevices
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPDeleteSTBDevicesSoapIn"/>
			<wsdl:output message="tns:TSMPDeleteSTBDevicesSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPGetCurrentSituation">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPGetCurrentSituation
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPGetCurrentSituationSoapIn"/>
			<wsdl:output message="tns:TSMPGetCurrentSituationSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesNewLicense">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPSecurityPackagesNewLicense
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPSecurityPackagesNewLicenseSoapIn"/>
			<wsdl:output message="tns:TSMPSecurityPackagesNewLicenseSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesActive">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPSecurityPackagesActive
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPSecurityPackagesActiveSoapIn"/>
			<wsdl:output message="tns:TSMPSecurityPackagesActiveSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesFreeLicense">
			<wsdl:documentation
				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TSMPSecurityPackagesFreeLicense
			</wsdl:documentation>
			<wsdl:input message="tns:TSMPSecurityPackagesFreeLicenseSoapIn"/>
			<wsdl:output message="tns:TSMPSecurityPackagesFreeLicenseSoapOut"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="TSMediaProxySoap" type="tns:TSMediaProxySoap">
		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="TTT">
			<soap:operation soapAction="http://tempuri.org/TTT" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="AAATestGenericMethod">
			<soap:operation soapAction="http://tempuri.org/AAATestGenericMethod" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="EnableVerimatrixLicenseForMAC">
			<soap:operation soapAction="http://tempuri.org/EnableVerimatrixLicenseForMAC" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="DisableVerimatrixLicenseForMAC">
			<soap:operation soapAction="http://tempuri.org/DisableVerimatrixLicenseForMAC" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPChangeFriendlyName">
			<soap:operation soapAction="http://tempuri.org/TSMPChangeFriendlyName" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPFastChannelListUpdate">
			<soap:operation soapAction="http://tempuri.org/TSMPFastChannelListUpdate" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPReconfigureSTBDevices">
			<soap:operation soapAction="http://tempuri.org/TSMPReconfigureSTBDevices" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPBlockDeblockSTBDevices">
			<soap:operation soapAction="http://tempuri.org/TSMPBlockDeblockSTBDevices" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPDeleteSTBDevicesOnlyFromMACS">
			<soap:operation soapAction="http://tempuri.org/TSMPDeleteSTBDevicesOnlyFromMACS" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPDeleteSTBDevices">
			<soap:operation soapAction="http://tempuri.org/TSMPDeleteSTBDevices" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPGetCurrentSituation">
			<soap:operation soapAction="http://tempuri.org/TSMPGetCurrentSituation" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesNewLicense">
			<soap:operation soapAction="http://tempuri.org/TSMPSecurityPackagesNewLicense" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesActive">
			<soap:operation soapAction="http://tempuri.org/TSMPSecurityPackagesActive" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesFreeLicense">
			<soap:operation soapAction="http://tempuri.org/TSMPSecurityPackagesFreeLicense" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:binding name="TSMediaProxySoap12" type="tns:TSMediaProxySoap">
		<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="TTT">
			<soap12:operation soapAction="http://tempuri.org/TTT" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="AAATestGenericMethod">
			<soap12:operation soapAction="http://tempuri.org/AAATestGenericMethod" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="EnableVerimatrixLicenseForMAC">
			<soap12:operation soapAction="http://tempuri.org/EnableVerimatrixLicenseForMAC" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="DisableVerimatrixLicenseForMAC">
			<soap12:operation soapAction="http://tempuri.org/DisableVerimatrixLicenseForMAC" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPChangeFriendlyName">
			<soap12:operation soapAction="http://tempuri.org/TSMPChangeFriendlyName" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPFastChannelListUpdate">
			<soap12:operation soapAction="http://tempuri.org/TSMPFastChannelListUpdate" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPReconfigureSTBDevices">
			<soap12:operation soapAction="http://tempuri.org/TSMPReconfigureSTBDevices" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPBlockDeblockSTBDevices">
			<soap12:operation soapAction="http://tempuri.org/TSMPBlockDeblockSTBDevices" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPDeleteSTBDevicesOnlyFromMACS">
			<soap12:operation soapAction="http://tempuri.org/TSMPDeleteSTBDevicesOnlyFromMACS" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPDeleteSTBDevices">
			<soap12:operation soapAction="http://tempuri.org/TSMPDeleteSTBDevices" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPGetCurrentSituation">
			<soap12:operation soapAction="http://tempuri.org/TSMPGetCurrentSituation" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesNewLicense">
			<soap12:operation soapAction="http://tempuri.org/TSMPSecurityPackagesNewLicense" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesActive">
			<soap12:operation soapAction="http://tempuri.org/TSMPSecurityPackagesActive" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="TSMPSecurityPackagesFreeLicense">
			<soap12:operation soapAction="http://tempuri.org/TSMPSecurityPackagesFreeLicense" style="document"/>
			<wsdl:input>
				<soap12:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap12:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="TSMediaProxy">
		<wsdl:port name="TSMediaProxySoap" binding="tns:TSMediaProxySoap">
			<soap:address location="[HIDDEN]"/>
		</wsdl:port>
		<wsdl:port name="TSMediaProxySoap12" binding="tns:TSMediaProxySoap12">
			<soap12:address location="[HIDDEN]"/>
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>

@z1c0
Copy link
Contributor

z1c0 commented Sep 8, 2022

Thanks for the update, @sabiland

EDIT: Damn, xml is badly code-formatted. Any way to fix it?

I updated your comment and put the XML in a triple back-tick (```) block.

May I also ask which version of the .NET APM Agent you are using?

@sabiland
Copy link
Author

sabiland commented Sep 8, 2022

<package id="Elastic.Apm" version="1.16.1" targetFramework="net462" />
<package id="Elastic.Apm.AspNetFullFramework" version="1.16.1" targetFramework="net462" />

@z1c0 z1c0 added this to the 8.5 milestone Sep 12, 2022
@z1c0 z1c0 self-assigned this Sep 12, 2022
gregkalapos pushed a commit that referenced this issue Sep 13, 2022
…ream (#1811)

* Fixed crashes on some SOAP 1.2 requests when using GetBufferedInputStream (#1759)

* add a reproducer/test

* updated PR as suggested

* Update SoapRequest.cs

* Change Fact method in test to Theory method

Co-authored-by: Wolfgang Ziegler <[email protected]>
Co-authored-by: Eduardo Theiji Yshimaro <[email protected]>
@gregkalapos
Copy link
Contributor

#1811 merged, which likely fixes it - @z1c0 you probably looked into this more - I leave this to you. Maybe we can let the issue open until the fix is verified.

@z1c0
Copy link
Contributor

z1c0 commented Sep 14, 2022

#1811 merged, which likely fixes it - @z1c0 you probably looked into this more - I leave this to you. Maybe we can let the issue open until the fix is verified.

Yes, makes sense @gregkalapos .
I could verify the fix in my small reproducer, but maybe @sabiland you could also have a look? Your application is obviously more complex and perhaps a more adequate verifier.

@sabiland
Copy link
Author

How can I test this locally? I always add packages via Nuget. How to test this now?

@z1c0
Copy link
Contributor

z1c0 commented Sep 14, 2022

How can I test this locally? I always add packages via Nuget. How to test this now?

If you clone this repository and replace your NuGet package references with project references to:

  • Elastic.Apm.csproj
  • Elastic.Apm.AspNetFullFramework.csproj

you will be able to run the latest source code.

@sabiland
Copy link
Author

Will try, but I cannot say when. I have lots of other things to do first.

@z1c0
Copy link
Contributor

z1c0 commented Sep 14, 2022

Will try, but I cannot say when. I have lots of other things to do first.

No worries, I appreciate the effort!

@sabiland
Copy link
Author

sabiland commented Oct 3, 2022

@z1c0 Would it be helpful if I post here few of our XML requests (some of which failed with APM) and you test it? You would just have to make blank WebService with blank method and one class?

@z1c0
Copy link
Contributor

z1c0 commented Oct 3, 2022

Hi @sabiland,
does that mean that the problem still exists? Or didn't you get a chance to test the latest code yet?
If you can provide me with a reproducer, I'm happy to run these tests, of course.

@sabiland
Copy link
Author

sabiland commented Oct 3, 2022

I just haven't be able to test it. Probably I won't have time to test it. That's why I offered XML requests, if you wish I can post them here.

@z1c0
Copy link
Contributor

z1c0 commented Oct 3, 2022

Thanks, @sabiland - I'd appreciate that.

@sabiland
Copy link
Author

sabiland commented Oct 3, 2022

I have attached txt file with 9 separate XML SOAP requests. Nothing inside data is sensitive (enough), so I didn't modify any data. That being said, still try to keep this data private.

EDIT: Now that the issue has been confirmed and solved, I am removing XML SOAP examples. Not that anything could be done with them, but just for any case. If someone would still need samples, they can contact me.

@z1c0
Copy link
Contributor

z1c0 commented Oct 4, 2022

Hi @sabiland,

I'm happy to tell you that I could successfully verify that the fix in #1811 resolves this issue.

With the WSDL definition above, I created a boiler-plate webservice and could reproduce the crash (w/o the fix from #1811) by POSTing one of the payloads you provided.

More specifically, this curl request ...

curl -v --request POST --header "Content-Type: application/soap+xml;charset=UTF-8" \
--data \
'<?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>

<TSMPReconfigureSTBDevices xmlns="http://tempuri.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <_ADSLUsername>konec15</_ADSLUsername>
  <_AccountID>15677091</_AccountID>
  <_STBDevices>
    <TSMPStbDevice>
      <MAC>0004309EE0A0</MAC>
      <STBType>345</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>ADSL2+</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>78DD128EBF6C</MAC>
      <STBType>372</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>VDSL2B+LTE</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>00043061AC76</MAC>
      <STBType>296</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>ADSL2+</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>0004304EFD7A</MAC>
      <STBType>149</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>VDSL2B+LTE</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>00043078E4DF</MAC>
      <STBType>320</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>ADSL2+</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>0004305344A5</MAC>
      <STBType>149</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>ADSL2+</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>00043087F5ED</MAC>
      <STBType>320</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>VDSL2B+LTE</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>00043063E7B3</MAC>
      <STBType>296</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>VDSL2B+LTE</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>8C19B575E947</MAC>
      <STBType>372</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>VDSL2B+LTE</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>0004306EEB59</MAC>
      <STBType>320</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>VDSL2B+LTE</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
    <TSMPStbDevice>
      <MAC>0004308453A4</MAC>
      <STBType>320</STBType>
      <Encoding>MPEG4</Encoding>
      <FriendlyName xsi:nil="true"/>
      <TVPackages>
        <string>ts_svc</string>
        <string>ts_live_pop4</string>
        <string>ts_live_ita4</string>
        <string>ts_live_std4</string>
        <string>ts_live_cro4</string>
      </TVPackages>
      <SetVerimatrix>true</SetVerimatrix>
      <IsSTBBlocked>false</IsSTBBlocked>
      <IsNewZeroTouchActivation>false</IsNewZeroTouchActivation>
      <Level2>ADSL2+</Level2>
      <CatchupHoursInfo>168</CatchupHoursInfo>
      <PackagesInfo>SiOL.T.O.PO.Reg3|SiOL.T.O.PO.Reg1|BB.T.IPTV.RV-01|SiOL.5028204N|SiOL.T.IPTV.RC-01S</PackagesInfo>
    </TSMPStbDevice>
  </_STBDevices>
</TSMPReconfigureSTBDevices>

  </soap12:Body>
</soap12:Envelope>' \
http://localhost/Elastic.Apm.AspNetFullFramework.Tests.SampleApp/Asmx/FooService.asmx

... resulted in following exception:

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement()
   at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()
   at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean&amp; abortProcessing)

Running the same request with the fix in #1811 applied, does not trigger this error anymore.

As already suspected, the size of the payload was causing these problems. This is also the reason that some of your supplied payloads work and others (the larger ones) don't.

Thanks for your help!

@sabiland
Copy link
Author

sabiland commented Oct 5, 2022

Vau great 👍!
I would probably never be able to debug this (to think that size of the XML request would be the problem) 😆.

@sabiland
Copy link
Author

We have deployed latest Elastic.Apm.AspNetFullFramework. It seems everything works ok now. But, I have noticed that maybe not all events (XML Posts to WebService) are captured by APM for analytics? Could this be possible? Most of the XML Posts are captured in analytics, but at least one is missing (that is one with largest XML load).

@z1c0
Copy link
Contributor

z1c0 commented Jan 24, 2023

Hi,
thanks for reporting back.
You might hit the limitation regarding non-buffered requests described here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
agent-dotnet bug Something isn't working
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

4 participants