Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение ресурса из интернета в локальной сети, Сабж 
:(
    Опции темы
FoXIT
Дата 4.12.2009, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Здравствуйте товарищи!
Опишу что есть.
Есть сервер с IIS. На нем крутится внутренний сайт организации, который доступен только из локальной сети.
Есть сервер с RedHat, на нем крутится прокся и раздает интернет избранным.

Задача в следующем, нужно на внутреннем сайте отобразить прогноз погоды из интернета, напривер информер gismeteo.
Для обладателей доступа в интернет это не проблема, а вот как быть с теми у кого нет интернета?
PM MAIL   Вверх
1stain
Дата 4.12.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 11
Всего: 40



Делаешь хэндлер
Код

    /// <summary>
    /// Summary description for $codebehindclassname$
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class GismeteoHandler : IHttpHandler
    {
        [DllImport("advapi32.dll")]
        public static extern bool LogonUser(string lpszUserName, string lpszDomain, string lpszPassword, int dwLogonType,
                                            int dwLogonProvider, out int phToken);

        private byte[] ImageContent
        { 
            get
            {
                return HttpContext.Current.Cache["GisMeteoWeatherImage"] as byte[];
            }
            set
            {
                HttpContext.Current.Cache.Add("GisMeteoWeatherImage", value, null, DateTime.Now.AddMinutes(15.0),
                                              Cache.NoSlidingExpiration, CacheItemPriority.Low, null);
            }
        }

        public void ProcessRequest(HttpContext context)
        {
            if (ImageContent == null)
            {
                ReadWeatherImageContent(); 
            }

            context.Response.AddHeader("Content-Length", ImageContent.Length.ToString());
            context.Response.ContentType = "image/gif";
            context.Response.BinaryWrite(ImageContent);
        }

        private void ReadWeatherImageContent()
        {
            // данные аккаунта с доступом в инет лучше хранить зашифрованными в web.config
            string weatherUserId = "";
            string weatherUserDomain = "";
            string weatherUserPassword = "";

            int returnedToken;

            if (LogonUser(weatherUserId, weatherUserDomain, weatherUserPassword, 3, 0, out returnedToken))
            {
                IntPtr token = new IntPtr(returnedToken);
                WindowsImpersonationContext impersonationContext = WindowsIdentity.Impersonate(token);
                try
                {
                    var request = (HttpWebRequest)WebRequest.Create("http://informer.gismeteo.ru/new/4944-30.GIF");
                    var response = (HttpWebResponse)request.GetResponse();
                    using (StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1251)))
                    {
                        ImageContent = Encoding.GetEncoding(1251).GetBytes(stream.ReadToEnd());
                    }
                }
                finally
                {
                    impersonationContext.Undo();
                }
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }


на странице:
Код

<asp:Image runat="server" ImageUrl="~/AppCode/GismeteoHandler.ashx" />



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
FoXIT
Дата 7.12.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Этот хендлер насколько я понял передает только картинку.

А что делать если надо информер посложнее там и текст и картинки?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0738 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.