Я встретив неожиданное поведение:asp.net: RewritePath по умолчанию документ не работает, как предполагалось
Следующий оператор работает нормально:
Context.RewritePath("~/Default.aspx"); // redirect to default doc, explicitly
Это дает мне ошибку 404:
Context.RewritePath("~/"); // redirect to default doc, implicitly
Загрузка документа /
из браузера без правильной загрузки URL-адреса загружает документ, поэтому я считаю, что IIS настроен правильно, и что /
и /Default.aspx
действительно относятся к тому же документу.
Я бы предпочел использовать последний оператор, так как есть вероятность, что имя документа по умолчанию будет изменено в IIS с течением времени. Я предполагаю, что решение включает некоторый метод для получения имени документа по умолчанию из IIS, однако мне не удалось найти такой метод.
Так что мой вопрос: каков правильный способ указания документа по умолчанию при переписывании URL-адреса?
+1 для лучшей артикуляции проблемы, которую я испытываю. –
Я отвечаю, что вы не можете использовать документы по умолчанию при перезаписи URL. Вы должны указать имя страницы. Существуют некоторые методы, которые могут позволить вам получить информацию о конфигурации из IIS о документе по умолчанию, но это не стоило бы усилий, потерпит неудачу в ограниченном доверии и не будет соответствовать одной версии IIS другой. Вы можете использовать response.redirect, который заставит браузер клиента запрашивать новый URL-адрес, и вы можете использовать для этого «~ /». В зависимости от того, что именно вы пытаетесь достичь путем перезаписи, это может быть лучшим решением в любом случае. –