![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Пишем CMS.
Необходимо сделать так, чтобы доступ к контенту для пользователя происходил прозрачно. Допустим имеется некоторый документ с именем document. Предполагается, что пользователь обращается к нему с помощью URL: http://someserver/somevirdir/document.aspx В реале страницы document.aspx не существует: global.asax, поймав такой запрос, редиректит его на страницу, допустим, content.aspx, которая в свою очередь разбирает запрашиваемый ресурс, производит поиск его в базе данных, получает содержимое и возвращает обратно пользователю. Вопрос в том, как сделать тоже самое для получения, например, картинки? В этом случае пользователь использует что-то типа: http://someserver/somevirdir/picture.jpg Картинка тоже хранитсся в базе, но злой IIS ищет этот ресурс физически, и возвращает пользователю 404-ю ошибку. До global.asax дело даже не доходит. Вот как это можно реализовать средствами чисто ASP.NET? А если никак, то может что-нить можно сделать с IIS? Короче, КАК??? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Сделай так. В global.asax.cs пропиши проверку запроса на предмет того, файл какого типа запрашивается. Если это твоя картинка, тогда используй текущую сессию (или параметры запроса, как там у тебя задумано) для получения картинки из базы данных, и возвращай стрим с картинкой.
404-я ошибка возвращается, если ресурс с данным именем не найден в указанном виртуальном каталоге (или алиасе). Значит, ты можешь например создать global.asax прямо в той директории, где находится default.aspx, и в этой странице прописать ссылку на картинку, расположенную в той же директории и имеющую имя, которое твой global.asax.cs распознает, как я написал ранее. -------------------- ![]() |
|||
|
||||
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Так все это понятно... Просто дело в том, что если запрашиваемый ресурс является, например, картинкой (т.е. с каким-нибудь jpg-расширением) у global.asax.cs не вызываются обработчики вообще. |
|||
|
||||
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Мда, видимо не судьба.
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Tomcat
До global.asax дело не доходит, потому что расширение файла .jpg не связано с ISAPI расширением aspnet_isapi.dll. Попробуй его добавить в Manage my computer->Internet Informarion Services->Default web site->Your virtual folder->Properties->Home directory->Configure. Там все просто, думаю, у тебя получится. После этих манипуляций должен будет выполняться Global.asax. |
|||
|
||||
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Вариант, конечно. Только в системе будут хранится файлы различного содержания. Одних толькокартинок с различными расширениями сколько. А еще есть pdf-ы, doc-и, zip-ы, rar-ы и т.п. Их всех придется прописать в насторойках для этой виртуальной директории, но все возможные расширения не предусмотришь. Сейчас ковырялся в настройках виртуальной директории... А что если пойти на такую хитрость: в IIS настроить страницу переадресации в случае ошибки 404 на свою aspx-страницу, а не стандартную. Изврат, конечно... Но... Вы что думаете? |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Понимаешь, тот подход, что я предложил уже используется народом для решения типовой задачи (такой как у тебя). Есть еще один вариант: использовать ASPX-страницу для генерации image'а. Конечно, в дизайнере ты ничего не увидишь, но зато в рантайме все будет работать.
Если интересно, могу привести код на VB.NET |
|||
|
||||
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Так вариант с генерацией картинки у меня и используется. Есть aspx-страница, которая берет из базы эти картинки, составляет корректный заголовок и отправляет ответ. Вопрос в том, как переадресовать запрос на эту aspx-страницую. |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Ответ тут Вероятно, тебе еще потребуется свой HttpHandler в дополнение к вышесказанному, но это я пальцем в небо тыкаю. |
|||
|
||||
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Я же сказал, что в этом случае мне придется предусмотреть все (!) варианты расширений для запрашиваемых ресурсов и указать их в настройках виртуальной директории. Чего я в принципе не могу обеспечить. Мало ли, что конечному узверю захочется хранить в моей CMS в качестве бинарных данных. |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Там можно поставить ".*" в качестве расширения. Попробуй - по идее, тогда все файлы должны идти через ASP.NET
|
|||
|
||||
| Tomcat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Угу, только не ".*", а просто "*". Вот и решение! Бальшое пасиба!!! |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Я рад, что в итоге смог помочь
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |