我有一个在IIS 7.5上运行的ASP.NET(.NET v4)Web应用程序。我有第三方想要将信息传递给我的系统。他们支持使用HTTP POST传递此信息,他们提供的信息是:
“此方法只是调用服务器上的脚本并传递每个脚本 字段作为CGI变量。当您收到服务器的数据时 应该在一行上返回一个“1”以表示成功。什么 否则将在我们的服务器上生成错误,将被调查。
要设置此投放方式,我们需要一个要发布的网址。我们可以用 HTTP或HTTPS。“
我的Web应用程序目前实现了许多WCF服务,但由于我不知道传入的变量是什么,因此我无法定义特定的合同。我可以创建一个普通的aspx页面,他们可以发布,然后读取传递的每个参数并进行适当的处理。
如果我这样做,如何发回包含'1'的行?
我是否需要做任何其他事情才能使此HTTP POST兼容。
答案 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/