как показать саит стоящии в интранете ? (HTTpRequest)

Программирование Web-приложений и Web-сервисов.

Модератор: Ramzes

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

как показать саит стоящии в интранете ? (HTTpRequest)

Сообщение student-uni » 26.04.2007 (Чт) 12:16

саит стоит в интранете на машине которая из интернета не видна
в етом же домене есть сервер, которыи виден из интернета и которыи
сам "видит" интранетовскую машину и ее саит

вопрос - как показать саит в интернет

сделал так
пишем вебсервис которыи лежит на сервере
получает HTTP-запрос и стягивает страницу в поток
Код: Выделить всё
[WebMethod]
      public string HelloWorld(string _url)
      {
         HttpWebRequest myHttpWebRequest = (HttpWebRequest)(WebRequest.Create(_url));
         HttpWebResponse myHttpWebResponse = (HttpWebResponse)(myHttpWebRequest.GetResponse() );
         Stream receiveStream   = myHttpWebResponse.GetResponseStream();

      
         Encoding encode   = System.Text.Encoding.GetEncoding("utf-8");
         StreamReader readStream = new StreamReader(receiveStream, encode);

         string ss = readStream.ReadToEnd();
         readStream.Close();

         myHttpWebResponse.Close();
         
         return ss;


Теперь пишем стрничку которую будет загружать клиент
и Которая выводит поток

Код: Выделить всё

public class WebForm1 : System.Web.UI.Page
   {
      Service1HelloWorld.Service1 s1;

      private void Page_Load(object sender, System.EventArgs e)
      {
         s1 = new HelloWorld.Service1HelloWorld.Service1();

         HttpContext cntx = HttpContext.Current;
         string requestPath = cntx.Request.Path;

         Response.Write(s1.HelloWorld("http://10.13.4.2/"));
         
      }

Вот так мы закачали и показали в интернет страницу http://10.13.4.2/ которую в интернете по прямому запросу не видно.

Вопросы:
- что делать дальше ? Мне же надо все ссылки на етои странице как то обрабатьвать. Если клиент кликнет например меню то конечно не попадет туда куда надо
- как быть с рисунками - их надо как то тоже передавать
- как быть с ЦСС - нет форматирования
- Может есть более правильныи метод передавать страницы ?

Спасибо всем

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.04.2007 (Чт) 12:44

Настроить на внешнем сервере переадресацию порта 80 на внутренний сервер. После этого всё будет работать само.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 26.04.2007 (Чт) 13:31

Вам как всегда Спасибо
Еше пару вопросов

A сможет ли тогда внешнии пользователь иметь доступ к
- http://10.13.4.2/ ?
- к интранету ? (в смысле не снижается ли етим безопасность)

как называетcя "переадресация порта 80 на внутренний сервер" по англииски, Port Forwarding ?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.04.2007 (Чт) 13:36

- Нет. Он будет обращаться к адресу внешнего сервера.
- Нет (ну или да, если админ кривой).
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 26.04.2007 (Чт) 13:36

Дело в том, что на внешнем Сервере работает процедура регистрации (Логин, Пароль, Сохранение в Сессию, Сверка с Базои данных если ок то можно показывать внутреннии сервер)

Получается что при редиректе смысл в етои процедуре отпадает ? Пользователь автоматически попадает на внутреннии сервер.

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 26.04.2007 (Чт) 13:43

Хотя можно наверно на внутреннем Сервере проверять пользователя и если незарегистрирован то делать редирект на внешнии сервер на страницу с регистрациеи.
Только вот вопрос, как передать внутреннему серверу информацию о поЛъзователе ?
Что ему сверять с базои данных ?
Сессии не проверишь - сервера разные,
Куки ? - по моему тоже к серверам привязаны, а если нет, то не всегда включены.
Через параметры в строке хттп ? - ну так ето бери и копируй

Что можно было бы на Ваш взгляд придумать ?

Спасибо

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 12.05.2007 (Сб) 11:50

А не лучше ли захостить сайт на сервере? :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 12.05.2007 (Сб) 18:12

Да лучше конечно, но по условию нельзя. Редирект - то что надо, но проблема втом что в будущем речь идёт о нескольких внутренних серверах, а редирект можно делать только на один.

В общем вытягиваю страницу по ХТТП-риквест, парсю, и всё что попадается (файлы рисунки итп) тоже пересасываю на внешний сервер, меняю путь и вперед.

Такое вот изврат. Но всё равно спасиюо за сочуствие :D


Вернуться в ASP.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList