2012-05-22 4 views
0

Всякий раз, когда запросURL Rewrite в IIS

http://localhost:9000/Content/PDF/ABC.pdf 

приходит (в IIS), я хочу модуль переписывание URL, чтобы обработать этот запрос и перенаправить его на

http://localhost:9000/User/GetPdf 

так, что мой контроллер и действие методов вызывается, и мой код запускается до того, как файл PDF будет показан конечным пользователям.

Здесь Пользователь UserController и GetPdf - ActionMethod в моем приложении.

Может ли любое тело сказать мне шаги по созданию этого URL-адреса переписать.

Заранее спасибо.

+0

В качестве примечания стороны я нашел ISAPI_Rewrite действительно полезный. Это позволит вам использовать файлы .htaccess в ISS, не меняя их вообще. больше информации на http://www.helicontech.com/isapi_rewrite/ – Manuel

+0

спасибо дракону. но у меня нет полномочий добавлять новый плагин на мой производственный сервер IIS. На моем серверном сервере IIS установлен модуль URL Rewrite. Мне нужно использовать это. Могу ли я помочь дальше? – shakti

+0

Извините, не знаю, как использовать модуль перезаписи URL в IIS. – Manuel

ответ

3

Я предполагаю, что вы используете IIS 7.x, и вы установили URL Rewrite 2.0 module.

В web.config файл приложения, добавьте <rewrite> элемент похож на:

<system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="PDF Rewrite"> 
      <match url="Content/PDF/([\w-]+)\.pdf" /> 
      <action type="Rewrite" url="User/GetPdf/{R:1}" logRewrittenUrl="true" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

([\w-]+) часть url="Content/PDF/([\w-]+)**\.pdf" будет "захватывать" имя PDF ("ABC" в вашем пример) без расширения файла. Затем {R:1} часть <action type="Rewrite" url="User/GetPdf/{R:1}" logRewrittenUrl="true" /> вставляет захваченную строку. Конечный результат является то, что:

http://localhost:9000/Content/PDF/ABC.pdf 

становится:

http://localhost:9000/User/GetPDF/ABC 

Я предполагаю, что вам нужно будет пройти в имени PDF вашего метода действий, так что если вы реализуете стандартную схему маршрутизации {Controller}/{Action}/{id}, то id будет установлен на "ABC".

Лучшее введение в модуль перезаписи URL, который я нашел, на самом деле является URL Rewrite 1.1 configuration reference. Несмотря на то, что это для v.1.1, а не 2.0, он обеспечивает лучший обзор, чем v.2.0 Configuration Reference. Это стоит прочитать с самого начала. В частности, необходимо понять «« Доступ к частям URL-адреса из правила Rewrite Rule ».

Чтобы отладить модуль перезаписи URL-адресов, вы можете использовать «Исправленный запрос запроса IIS 7.x», который, вопреки его имени, может использоваться для отслеживания успешных и неудачных запросов. Этот www.iis.net entry иллюстрирует, как настроить это и объем доступной подробной информации об отладке.

Также обратите внимание, что атрибут logRewrittenUrl="true" означает, что перезаписанный URL-адрес будет регистрироваться в стандартном журнале IIS вместо исходного URL-адреса. (Он не может использоваться для регистрации как исходного, так и перезаписанного URL-адреса - вы можете получить только тот или иной.)