Как установить сопоставление обработчика для каталога в IIS 6.0? - PullRequest
0 голосов
/ 25 июня 2009

У меня есть IIS 7.0 на моей машине разработки и IIS 6.0 на моем сервере. На моей машине разработки я смог установить карту обработчика в каталоге на моем сайте с именем / ViewHtml / и сопоставил его с asp.net. В моем global.asax я проверяю запрос, отправленный на asp.net для / ViewHtml /, и обслуживаю соответствующий html-файл (html-версию документа Doc, Power Point или Excel), расположенный вне виртуального каталога этого приложения. Я делаю это таким образом, потому что все файлы защищены правами, мы не хотим помещать эти файлы в базу данных из-за масштабируемости, и мне нужно скрыть путь к этим файлам на сервере. Это все работает в IIS 7.0 именно так, как я хотел бы. Хотя мне не удалось настроить свой сервер IIS 6.0 для сопоставления всех запросов в этот каталог с asp.net.

Есть идеи? Спасибо, ребята?

Ответы [ 3 ]

1 голос
/ 02 июля 2009

Я настроил веб-приложение, используя ту же конфигурацию, что и вы, и также получаю 404. Я не знаю, почему оно работает в IIS 7, но вот что мне нужно было сделать, чтобы это исправить.

Создайте класс, который реализует класс System.Web.IHttpHandler. переместите код из Application_BeginRequest в вашу реализацию IHttpHandler.ProcessRequest.

Теперь вам просто нужно зарегистрировать ваш обработчик HTTP в ASP.NET. Для этого добавьте запись в ваш Web.config в /configuration/system.web/httphandlers.

Web.config Пример:

...
<httpHandlers>
    <clear />
    <add verb="*" path="*" type="namespace.classname, assemblyname" />
</httpHandlers>
...

Эта запись сообщает ASP.NET, что нужно обрабатывать HTTP-запросы с любым расширением и любым HTTP-методом, выполняя код в HTTP-обработчике. Обратите внимание, что я также очищаю все ранее определенные обработчики (определенные в web.config машины).

Обратите внимание, что вам все равно потребуется сопоставление приложений, настроенное в IIS.

1 голос
/ 25 июня 2009

Если я правильно понимаю проблему, звучит так, как будто вам нужно добавить «Сопоставление приложений с подстановочными знаками» для вашего виртуального каталога. Другими словами, вы хотите перенаправить все запросы к любому расширению файла в расширение ISAPI ASP.NET.

Для этого откройте свойства вашего виртуального каталога. На вкладке Виртуальный каталог (вкладка Домашний каталог, если это веб-сайт) нажмите кнопку Конфигурация ... . Нажмите кнопку Вставить ... рядом с нижним списком в появившемся диалоговом окне. В этом диалоговом окне выберите «% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll» в качестве исполняемого файла и обязательно снимите флажок «Проверить, что файл существует», поскольку запрашиваемые файлы не жить в вашем виртуальном каталоге.

Надеюсь, это поможет!

0 голосов
/ 27 апреля 2016

Я думаю, что ваша проблема связана с политикой доступа, вы должны убедиться, что политика доступа - «Чтение», а не «Нет».

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