2011-09-08 84 views
0

我有一個在IIS 7.5上運行的ASP.NET(.NET v4)Web應用程序。我有第三方希望將信息傳遞給我的系統。他們支持通過使用HTTP POST這個信息,他們提供的信息是:在ASP.NET中創建接受CGI變量的HTTP POST方法

「此方法僅調用服務器上的腳本,並通過每個 字段作爲CGI變量當你接收到數據服務器 應該返回一個'1'表示成功,任何 其他將在我們的服務器上產生一個錯誤,將被調查

要設置這種傳遞方法,我們需要一個URL來發布。使用 HTTP或HTTPS。「

我的web應用程序當前實現了許多WCF服務,但我不知道變量傳入的內容是什麼,我無法定義特定的合同。我可以創建一個正常的aspx頁面,他們可以發佈,然後讀取傳遞的每個參數並進行適當的處​​理。

如果我這樣做,我該如何發回一行包含'1'?

我是否需要做其他任何事情來使這個HTTP POST兼容。

+0

通過獲取http POST vars獲取數據;至於返回1,我會想象返回它就像Response.Write(「1」)一樣簡單; – Dave

回答

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 

如果您需要按照以回車的一個,那麼我相信你可以在統環境物體使用回車財產,但我沒有收到文檔來查找它。但是,這應該讓你開始。

要記住的最重要的事情是確保NOTHING是從aspx輸出的,甚至不是回車。

我以前在我的博客上寫過一篇關於如何使用此方法爲Cisco-IP電話製作電話號碼簿的文章,如果您想閱讀它。你可以在這裏找到它:http://shawtyds.wordpress.com/2009/09/26/cisco-ip-phone-directories-using-c/

+0

這很好用 - 非常感謝 –