C# 检索包含XML的HTTP POST请求

C# 检索包含XML的HTTP POST请求,c#,xml,http,iis,post,C#,Xml,Http,Iis,Post,我需要设置一个网页,通过HTTP POST侦听XML文档。我不需要发帖,我需要收到那个帖子。这是什么东西?我应该使用HTTP处理程序、web服务、webRequest、流还是其他什么?我需要使用IIS服务器,更喜欢C# 我试过… 我不认为我可以使用WebRequest,因为我没有发送请求,只是在等待它们 “HttpRequest.InputStream”,但我不确定如何使用它或将它放在哪里。我需要在web服务或asp.net应用程序中使用它吗?我把它放进去了 我尝试了一个简单的web服务-但当

我需要设置一个网页,通过HTTP POST侦听XML文档。我不需要发帖,我需要收到那个帖子。这是什么东西?我应该使用HTTP处理程序、web服务、webRequest、流还是其他什么?我需要使用IIS服务器,更喜欢C#

我试过…

  • 我不认为我可以使用WebRequest,因为我没有发送请求,只是在等待它们

  • “HttpRequest.InputStream”,但我不确定如何使用它或将它放在哪里。我需要在web服务或asp.net应用程序中使用它吗?我把它放进去了

  • 我尝试了一个简单的web服务-但当我尝试访问时”http://localhost:8000/EchoWithGet?s=Hello,world!”,我得到一个“找不到网页错误”

  • 如果任何人有任何有用的代码或链接,这将是伟大的

    编辑:
    我正在尝试从另一个程序接收通知。

    您可以编写一个ASP.NET应用程序,该应用程序将托管在IIS中,其中您可以有一个.ASPX页面或一个泛型页面(取决于您希望结果的格式-是否返回HTML或其他类型)然后读取
    Request.InputStream
    ,其中包含来自客户端的请求主体

    下面是一个如何编写通用处理程序的示例(
    MyHandler.ashx
    ):


    我不确定在哪里调用或使用处理程序。这就是我目前所拥有的

    Default.aspx

    <%@Page Inherits="WebApplication1._Default"%>
    <%@OutputCache Duration="10" Location="Server" varybyparam="none"%>
    <script language="C#" runat="server">
      void Page_Init(object sender, EventArgs args) {
    
      }     
    }
    </script>
    <html>
      <body>
      </body>
    </html>
    

    我不需要返回任何东西,我只是收到来自另一个程序的通知。我尝试了Request.InputStream,并在代码中设置了一个断点。它似乎没有收到任何通知。我的代码与上面的try#2链接非常相似。我把它放进了书页。每次加载请求后触发页吗?HTTP是基于请求/响应的协议。所以你必须总是归还一些东西。您可以返回一个200状态代码,其中有一个空的正文,向客户端指示操作成功。我知道了,我将试用该代码并让您知道。谢谢你的帮助!=]所以我让你的密码生效了我想。。。我正在使用wfetch发送GET和POST请求。代码能够看到GET请求,但在我发送POST时什么也没有发生。有什么想法吗?谢谢nm您必须ping确切的页面,不能只执行localhostThank,但我试图远离网络层。@Number,它不是TcpListener,它是HttpListener,因此与NW层无关,但当然,您的代码是您的选择。哦,好的,谢谢,我会尝试一下。处理程序方法不适用于me@nubme,你解决了这个问题吗?
    <%@Page Inherits="WebApplication1._Default"%>
    <%@OutputCache Duration="10" Location="Server" varybyparam="none"%>
    <script language="C#" runat="server">
      void Page_Init(object sender, EventArgs args) {
    
      }     
    }
    </script>
    <html>
      <body>
      </body>
    </html>
    
    namespace WebApplication1  
    {
      public partial class _Default : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpContext contex = Context;
            MyHandler temp = new MyHandler();
            temp.ProcessRequest(context);
        }
      }
    
        public class MyHandler : IHttpHandler
        {
           public void ProcessRequest(HttpContext context)
           {
             var stream = context.Request.InputStream;
             byte[] buffer = new byte[stream.Length];
             stream.Read(buffer, 0, buffer.Length);
             string xml = Encoding.UTF8.GetString(buffer);
    
             ... do something with the XML
    
            // We only set the HTTP status code to 202 indicating to the
            // client that the request has been accepted for processing
            // but we leave an empty response body
            context.Response.StatusCode = 202;
           }
    
          public bool IsReusable
          {
            get
            {
              return false;
            }
          }
       }
    }