URL IIS переписывает 404 ошибки

Я выполняю маленький интранет-сайт от 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
0
задан 2 June 2015 в 11:01
2 ответа

/ - зарезервированный символ, поэтому вам нужно будет закодировать URL-адрес значения строки запроса.

Ваш URL-адрес должен выглядеть следующим образом:

http://localhost/page/LoadPage.aspx?p=downloads%2Fsoftware

Чтобы использовать значение в ваш код .NET, вам нужно будет декодировать значение:

HttpUtility.UrlDecode(value);

https://msdn.microsoft.com/en-us/library/adwtk1fy.aspx

0
ответ дан 5 December 2019 в 12:44

Я решил проблему. Похоже, что IIS не любит / в запросе, если только это double экранировано следующим образом % 252f . Однако он не заменит его косой чертой, и поэтому URL-адрес выглядит беспорядочным. Я избежал этой проблемы, используя подчеркивание для символа косой черты: /page/LoadPage.aspx?downloads_software Затем двоеточие заменяется косой чертой во время выполнения (изменение, к сожалению, не отображается в URL-адресе).

0
ответ дан 5 December 2019 в 12:44

Теги

Похожие вопросы