ASMX服务错误-使用XmlInclude或SoapInclude属性来指定静态未知的类型

我有一个带有Web方法的Asmx服务。 在该Web方法中,我正在调用其他端点(逻辑应用程序端点)。逻辑应用程序剩余端点接受请求并返回成功200响应。

  using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("base address");
                var content = new StringContent(JsonConvert.SerializeObject(request,Formatting.Indented),Encoding.UTF8,"application/json");
                var result = await client.PostAsync("some-uri",content);                  
            }

我一击到client.postasync行,就会收到以下错误:

System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type System.Threading.Tasks.Task`1[[System.Threading.Tasks.VoidTaskResult,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]] was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
   at microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_Task(String n,String ns,Task o,Boolean isnullable,Boolean needType)
   at microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_Task(Object o)
   at microsoft.Xml.Serialization.GeneratedAssembly.TaskSerializer.Serialize(Object objectToSerialize,XmlSerializationWriter writer)
   at system.xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces namespaces,String encodingStyle,String id)
   --- End of inner exception stack trace ---
   at system.xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,String id)
   at system.xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter,XmlSerializerNamespaces namespaces)
   at system.web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response,Stream outputStream,Object returnValue)
   at system.web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues,Stream outputStream)
   at system.web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
   at system.web.Services.Protocols.WebServiceHandler.Invoke()
nbayjj 回答:ASMX服务错误-使用XmlInclude或SoapInclude属性来指定静态未知的类型

我发现了错误。该网络方法被设为异步,这导致了此问题。 我使Web方法返回void并将http客户端发布请求的代码行更改为以下内容:

  var result = client.PostAsync(reqUri,requestContent).GetAwaiter().GetResult();

本文链接:https://www.f2er.com/2489489.html

大家都在问