【问题标题】:ASMX Service Error - Use the XmlInclude or SoapInclude attribute to specify types that are not known staticallyASMX 服务错误 - 使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型
【发布时间】:2020-07-20 08:17:27
【问题描述】:

我有一个带有 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, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, 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()

【问题讨论】:

    标签: c# xml asmx azure-logic-apps


    【解决方案1】:

    我发现了错误。 webmethod 是异步的,这导致了这个问题。 我使web方法返回void并将http客户端post请求代码行更改为:

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

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 2021-08-26
      • 2021-11-04
      相关资源
      最近更新 更多