接收包含XML原始数据的帖子时,总是有一个空请求。来自第三方的内容,但Postman请求有效

接收包含XML原始数据的帖子时,总是有一个空请求。来自第三方的内容,但Postman请求有效,xml,post,asp.net-web-api,Xml,Post,Asp.net Web Api,我有一个WebForms应用程序,它使用框架4.6和一些WebApi服务 一个特定的服务被第三方网站使用,因此我无法控制发送给我的请求。我专门构建了这个服务来满足这个请求 我们正在处理一篇带有原始数据XML格式正文的帖子。我可以使用Chrome开发工具查看请求及其所有标题,并且可以看到“负载”是我所期望的XML。但是,一旦启动控制器的POST方法,Response.Content就根本不包含XML正文。对象的内容有一个空白字符串,Length属性显示为0 请求的内容类型标头为“text/xml”

我有一个WebForms应用程序,它使用框架4.6和一些WebApi服务

一个特定的服务被第三方网站使用,因此我无法控制发送给我的请求。我专门构建了这个服务来满足这个请求

我们正在处理一篇带有原始数据XML格式正文的帖子。我可以使用Chrome开发工具查看请求及其所有标题,并且可以看到“负载”是我所期望的XML。但是,一旦启动控制器的POST方法,Response.Content就根本不包含XML正文。对象的内容有一个空白字符串,Length属性显示为0

请求的内容类型标头为“text/xml”

我已经使用Postman设置了一个类似的请求,它具有相同的头值和直接从请求复制的XML主体,如使用chromedev工具所示。我这样做的时候效果很好。使用XML正确填充Response.Content,并对其进行反序列化和正确处理

以下是我的发帖方法:

public HttpResponseMessage Post () {
      try {
        Library.LogMessageToFile("Start", "WfsController.Post", Enums.LogLevel.Info);
        string rawPostData = GetRawPostData().Result;
        rawPostData = rawPostData.Replace("xmlns:='null'", "");
        XmlSerializer featureSerializer = new XmlSerializer(typeof(GetFeature));
        GetFeature feature = (GetFeature)featureSerializer.Deserialize(new StringReader(rawPostData));
        feature.Query.typeNames = feature.Query.typeNames.Replace(":", "");
        return Post(feature.service, "GetFeature", new MonitoringLocationCriteria(), null, null, null, feature.Query.typeNames, null, null, null, null, null, null, feature.version, feature.count);
      }
      catch (Exception e) {
        return BuildExceptionReport(
          OWS_EXCEPTION_MISSING_PARAMETER_VALUE,
          "Service and Request parameters are required" + e.Message,
          "request");
      }
    }
我必须使用异步方法从请求中获取数据。内容对象:

private async Task<string> GetRawPostData () {
      using (var contentStream = await this.Request.Content.ReadAsStreamAsync().ConfigureAwait(true)) {
        contentStream.Seek(0, SeekOrigin.Begin);
        using (var sr = new StreamReader(contentStream)) {
          return sr.ReadToEnd();
        }
      }
    }
专用异步任务GetRawPostData(){
使用(var contentStream=wait this.Request.Content.ReadAsStreamAsync().configurewait(true)){
contentStream.Seek(0,SeekOrigin.Begin);
使用(var sr=newstreamreader(contentStream)){
返回sr.ReadToEnd();
}
}
}
我可以在Post方法的第一行放一个断点,然后看到Request.Content没有它应该有的XML文本

我已经确定CORS已经设置好了。这项服务以前一直有效。我不记得我们改变了与此服务相关的任何内容

感谢您的帮助。我真的被卡住了