title: Request timeout when soap12 is malformated
body: <p>We use Servicestack 5.9.2 and get the following error in the log file when sending an malformated soap message. The soap request runs in a timeout. What do we have to do, that the request gets a response with an error message?</p>
  <pre><code>2021-10-01 09:10:43,356 DEBUG: Comp.Webservice.Utils.BaseService.LogCount: Request type: Get Documentations, json: {OnlyChanged:True,Type:CarePlan,SubTypeIds:[0],CustomerIds:[1004],From:2020-01-01,To:2022-01-01,Limit:1}, returning: 0 objects
  2021-10-01 09:10:43,683 DEBUG: Comp.ServiceStackAppHost+&lt;&gt;c__DisplayClass4_0.&lt;Configure&gt;b__2: stop 0
  2021-10-01 09:11:01,890 DEBUG: Comp.ServiceStackAppHost+&lt;&gt;c__DisplayClass4_0.&lt;Configure&gt;b__1: start 1
  2021-10-01 09:11:01,891 DEBUG: Comp.ServiceStackAppHost+&lt;&gt;c.&lt;ConfigurePlugins&gt;b__23_2: POST /soap12
  2021-10-01 09:11:01,945 ERROR: Comp.ServiceStackAppHost.LogToLogger: Error processing: http://localhost:8183/api/soap12
  System.Runtime.Serialization.SerializationException: DeserializeDataContract: Error converting type: DeserializeDataContract: Error converting type: Der ungültige Aufzählungswert &quot;39&quot; kann nicht in den Typ &quot;Comp.Dto.DocumentationType&quot; deserialisiert werden. Stellen Sie sicher, dass die erforderlichen Aufzählungswerte vorhanden und mit dem Attribut &quot;EnumMemberAttribute&quot; gekennzeichnet sind, wenn der Typ das Attribut &quot;DataContractAttribute&quot; aufweist. ---&gt; System.Runtime.Serialization.SerializationException: DeserializeDataContract: Error converting type: Der ungültige Aufzählungswert &quot;39&quot; kann nicht in den Typ &quot;Comp.Dto.DocumentationType&quot; deserialisiert werden. Stellen Sie sicher, dass die erforderlichen Aufzählungswerte vorhanden und mit dem Attribut &quot;EnumMemberAttribute&quot; gekennzeichnet sind, wenn der Typ das Attribut &quot;DataContractAttribute&quot; aufweist. ---&gt; System.Runtime.Serialization.SerializationException: Der ungültige Aufzählungswert &quot;39&quot; kann nicht in den Typ &quot;Comp.Dto.DocumentationType&quot; deserialisiert werden. Stellen Sie sicher, dass die erforderlichen Aufzählungswerte vorhanden und mit dem Attribut &quot;EnumMemberAttribute&quot; gekennzeichnet sind, wenn der Typ das Attribut &quot;DataContractAttribute&quot; aufweist.
     bei System.Runtime.Serialization.EnumDataContract.ReadEnumValue(String value, Int32 index, Int32 count)
     bei System.Runtime.Serialization.EnumDataContract.ReadEnumValue(XmlReaderDelegator reader)
     bei System.Runtime.Serialization.EnumDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
     bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
     bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
     bei ReadGetDocumentationsFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
     bei System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
     bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
     bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
     bei System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
     bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
     bei ServiceStack.Text.XmlSerializer.Deserialize(String xml, Type type)
     --- Ende der internen Ausnahmestapelüberwachung ---
     bei ServiceStack.Text.XmlSerializer.Deserialize(String xml, Type type)
     bei ServiceStack.Serialization.DataContractSerializer.DeserializeFromString(String xml, Type type)
     --- Ende der internen Ausnahmestapelüberwachung ---
     bei ServiceStack.Serialization.DataContractSerializer.DeserializeFromString(String xml, Type type)
     bei ServiceStack.Host.Handlers.SoapHandler.&lt;ExecuteMessage&gt;d__7.MoveNext()
  </code></pre>
  <p>Soap:</p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;soap12:Envelope xmlns:soap12=&quot;http://www.w3.org/2003/05/soap-envelope&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
     &lt;soap12:Body&gt;
        &lt;GetDocumentations xmlns=&quot;http://schemas.datacontract.org/2004/07/Comp&quot; xmlns:i=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
           &lt;CustomerIds xmlns:d2p1=&quot;http://schemas.microsoft.com/2003/10/Serialization/Arrays&quot;&gt;
              &lt;d2p1:int&gt;1004&lt;/d2p1:int&gt;
           &lt;/CustomerIds&gt;
           &lt;From&gt;2020-01-01T00:00:00&lt;/From&gt;
           &lt;Limit&gt;1&lt;/Limit&gt;
           &lt;OnlyChanged&gt;true&lt;/OnlyChanged&gt;
           &lt;SubTypeIds xmlns:d2p1=&quot;http://schemas.microsoft.com/2003/10/Serialization/Arrays&quot;&gt;
              &lt;d2p1:int&gt;0&lt;/d2p1:int&gt;
           &lt;/SubTypeIds&gt;
           &lt;To&gt;2022-01-01T00:00:00&lt;/To&gt;
           &lt;Type&gt;39&lt;/Type&gt;
        &lt;/GetDocumentations&gt;
     &lt;/soap12:Body&gt;
  &lt;/soap12:Envelope&gt;
  </code></pre>
  <p>In that case 39 is wrong. 39 has to be enum xy and it works.</p>
  <p>Any idea is to redefine our UncaughtExceptionHandlers to build a response and end the request. Something like this:</p>
  <pre><code>            UncaughtExceptionHandlers.Add((req, res, operationName, ex) =&gt;
              {
                  // write to logfile
                  //build response
                  res.StatusCode = (int)HttpStatusCode.BadRequest;
                  res.EndRequest();
              });
  </code></pre>
  <p>Is that how this should be handled? If yes, does somebody have a good example.</p>