Я выполняю маленький интранет-сайт от Windows 7 и IIS, и у меня есть страница page/LoadPage.aspx
который является контейнерной страницей ASPX для отображения требуемой страницы, например. http://localhost/page/LoadPage.aspx?p=downloads
(который загружается downloads.html
расположенный в корневом каталоге).
Проблема, когда создание Удобного для пользователя URL с помощью URL Переписывает плагин в IIS 7, если тег запроса (p
) запрашивает страницу в конкретном каталоге (например. http://localhost/page/LoadPage.aspx?p=downloads/software
, который должен загрузить страницу downloads/software.html
) затем 404 ошибки будут брошены, потому что сервер думает, что пользователь запросил каталог.
Отображение и перенаправление действительно работают на единственные запросы как page/LoadPage.aspx?p=downloads
который успешно перенаправляет к http://localhost/downloads.html
.
Спасибо.
ОБНОВЛЕНИЕ: Вот код. Это могла быть проблема?
URL в качестве примера: /page/LoadPage.aspx?p=downloads
(Это работает и перенаправляет к downloads.html
)
URL в качестве примера: /page/LoadPage.aspx?p=downloads/software
(Это не работает, но предназначено для перенаправления к /downloads/software.html
)
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim p = Request.QueryString("p").ToString
Dim page = HttpUtility.UrlDecode(p)
Dim ReadHTML As New IO.StreamReader("\\PC\User\Documents\IIS Websites\Intranet\" & page & ".html")
container.InnerHtml = ReadHTML.ReadToEnd
End Sub
/
- зарезервированный символ, поэтому вам нужно будет закодировать URL-адрес значения строки запроса.
Ваш URL-адрес должен выглядеть следующим образом:
http://localhost/page/LoadPage.aspx?p=downloads%2Fsoftware
Чтобы использовать значение в ваш код .NET, вам нужно будет декодировать значение:
HttpUtility.UrlDecode(value);
Я решил проблему. Похоже, что IIS не любит /
в запросе, если только это double экранировано следующим образом % 252f
. Однако он не заменит его косой чертой, и поэтому URL-адрес выглядит беспорядочным. Я избежал этой проблемы, используя подчеркивание для символа косой черты: /page/LoadPage.aspx?downloads_software
Затем двоеточие заменяется косой чертой во время выполнения (изменение, к сожалению, не отображается в URL-адресе).