Я пытаюсь настроить прокси-сервер, который мы публикуем на моем прокси-сервере. Прокси-сервер выведет опубликованные данные на сервер и получит ответ от фактического сервера. Затем отобразите ответ на прокси-сервере, который веб-сайт, который сделал запрос, читает и делает что-либо с данными. У меня возникли проблемы с первой частью получения исходных данных, поступающих с веб-сайта. Кажется, файл asmx всегда хочет что-то делать с параметрами, но мой прокси-сервер просто хочет передать необработанный запрос. Он не знает параметров. Ниже приведен пример запроса на прокси-сервер: localhost/mobile.asmx POST {"userName": "[email protected]", "password": "xxxx", "appID": "2302FF64-925D-4E0E -B086-73AA9FF152D8 "}C# .net доступ к исходному запросу json в службе asmx
Еще раз я не хочу просто вводить имя пользователя и пароль. Я хочу захватить полный необработанный запрос и отправить его на реальный сервер.
Я пробовал множество вещей. Поскольку параметр запроса отсутствует, я не могу использовать запрос. Я также считаю, что функция GETUSERTOKENLOGIN происходит после чтения потока исходных данных, поэтому я больше не могу использовать поток для получения данных. Я попробовал немало вещей.
Я хочу, чтобы это был супер простой сценарий, если это возможно. Ниже мой супер простой пример. Я знаю, что могу просто добавить обертку вокруг данных, но я бы не хотел этого делать.
Любая помощь была бы принята с благодарностью. MOBILE.ASMX
<%@ WebService Language="C#" Class="mobile" %>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Net;
using System.IO;
using System.Web.Script.Services;
using System.Text;
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class mobile : System.Web.Services.WebService
{
public mobile()
{
}
// The HelloWorld() example service returns the string Hello World.
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetUserTokenLogin()
{
// Create a new request to the mentioned URL.
WebRequest myWebRequest = WebRequest.Create("http://api.geonames.org/citiesJSON");
myWebRequest.Method = "POST";
Stream dataStream = myWebRequest.GetRequestStream();
WebResponse myWebResponse = myWebRequest.GetResponse();
// Print the HTML contents of the page to the console.
Stream streamResponse = myWebResponse.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
Char[] readBuff = new Char[256];
int count = streamRead.Read(readBuff, 0, 256);
String FullData = "";
while (count > 0)
{
String outputData = new String(readBuff, 0, count);
FullData = FullData + outputData;
count = streamRead.Read(readBuff, 0, 256);
}
// Close the Stream object.
streamResponse.Close();
streamRead.Close();
myWebResponse.Close();
return FullData;
}
}
Есть ли способ получить исходное сообщение из файла asmx? Я просто создаю файл. Я бы предпочел, чтобы мой клиент не должен был проходить через всю эту конфигурацию. Можно ли получить исходную почту в службу, чтобы я мог отправить ее на сервер. Если бы я просто мог это сделать, тогда у меня был бы хороший сценарий. –
Я отредактировал свой ответ, необработанные сообщения вам нужно реализовать 'IHttpModule'. Взглянуть. – nunespascal
Спасибо. За ваше время. Я нашел это решение очень полезным: http://www.codeproject.com/Articles/31329/Simple-Reverse-Proxy-in-C-2-0-description-and-depl Все, что мне нужно было сделать, это скачать демо, которая дает вам dll и webconfig. Я поставлю более точную информацию в моем первоначальном вопросе. благодаря –