在ASP.NET中创建HTTP POST方法,接受CGI变量

时间:2011-09-08 09:37:24

标签: asp.net http-post

我有一个在IIS 7.5上运行的ASP.NET(.NET v4)Web应用程序。我有第三方想要将信息传递给我的系统。他们支持使用HTTP POST传递此信息,他们提供的信息是:

  

“此方法只是调用服务器上的脚本并传递每个脚本   字段作为CGI变量。当您收到服务器的数据时   应该在一行上返回一个“1”以表示成功。什么   否则将在我们的服务器上生成错误,将被调查。

     

要设置此投放方式,我们需要一个要发布的网址。我们可以用   HTTP或HTTPS。“

我的Web应用程序目前实现了许多WCF服务,但由于我不知道传入的变量是什么,因此我无法定义特定的合同。我可以创建一个普通的aspx页面,他们可以发布,然后读取传递的每个参数并进行适当的处​​理。

如果我这样做,如何发回包含'1'的行?

我是否需要做任何其他事情才能使此HTTP POST兼容。

1 个答案:

答案 0 :(得分:1)

上次我不得不解决类似情况时,我是使用标准的ASPX页面完成的,而且一切都运行良好。

在我的情况下,输出是XML,所以我必须确保在我的情况下更改了输出mime类型以匹配“text / xml”..“text / plain”我猜你的..

无论如何,下面是C#急剧代码,并确保你的ASPX文件只有顶线,即:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="register.aspx.cs" Inherits="myservices.register" ContentType="text/xml" %>

没有别的,没有回车或任何东西。

然后在后面的代码中完成所有工作:

    protected void Page_Load(object sender, EventArgs e)
    {

      Response.Clear();
      Response.ContentType = "text/plain";

      //Get your CGI variables here...  you will have to get them to tell you what to expect
      string myparam = (string)Request.QueryString["myparam"];

      //do what ever you need here with your variables      

      Response.Write("1");
      Response.End();

    }// End page load handler

如果你需要使用回车符号,那么我相信你可以在system.environment对象中使用回车属性,但是我没有得到doc来查找它。那应该可以让你开始。

要记住的最重要的事情是确保从aspx输出NOTHING,甚至不回车。

我之前在我的博客上写过一篇文章,介绍如何使用此方法为Cisco-IP手机生成手机目录,如果您想阅读它。您可以在此处找到它:http://shawtyds.wordpress.com/2009/09/26/cisco-ip-phone-directories-using-c/