Создать метод HTTP POST в ASP.NET, который принимает переменные CGI - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть веб-приложение ASP.NET (.NET v4), работающее на IIS 7.5.У меня есть третье лицо, которое хочет передать информацию в мою систему.Они поддерживают передачу этой информации с помощью HTTP POST, информация, которую они предоставляют:

"Этот метод просто вызывает скрипт на вашем сервере и передает каждое поле как переменную CGI. Когда вы получили данные,Сервер должен возвращать «1» в строке, чтобы указать на успех. Все остальное вызовет ошибку на нашем сервере, которая будет исследована.

Чтобы настроить этот метод доставки, нам нужен URL для публикации.Мы можем использовать HTTP или HTTPS. "

В настоящее время мое веб-приложение реализует множество служб WCF, но, поскольку я не знаю, какие переменные будут переданы, я не смогу определить конкретный контракт.Могу ли я создать обычную страницу aspx, которую они могут публиковать, а затем прочитать каждый из переданных параметров и выполнить соответствующую обработку.

Если я сделаю это, как отправить обратно строку, содержащую '1'?

Нужно ли что-то еще делать, чтобы сделать этот HTTP POST-совместимым.

1 Ответ

1 голос
/ 08 сентября 2011

В прошлый раз, когда мне приходилось решать аналогичную ситуацию, я делал это, используя стандартную страницу 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, но у меня нет документов для его просмотра.Это, однако, должно помочь вам начать.

НАИБОЛЕЕ самое важное, что нужно помнить, это убедиться, что НИЧЕГО не выводится из aspx, даже не возврат каретки.

Ранее я писал статью оМой блог о том, как использовать этот метод для создания телефонных каталогов для телефонов Cisco-IP, если вы хотите прочитать его.Вы можете найти его здесь: http://shawtyds.wordpress.com/2009/09/26/cisco-ip-phone-directories-using-c/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...