3

У меня есть .net 4.0 веб-приложение работает как очарование на моем локальном компьютере и старый веб-сервер. Оба компьютера используют классический пул приложений .net 4.0 без каких-либо проблем.Ошибка ASP.NET Context RewritePath 404

Но когда я перешел на новый веб-сервер, он дал ошибку 404 вместо переписывания URL-адресов. Я создал новое приложение настолько простым, насколько это возможно. Он переписывает все пути запроса к Default.aspx, как показано ниже:

Global.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    Context.RewritePath("default.aspx", false); 
} 

я могу получить доступ к default.aspx, если я сделать прямой запрос на сам файл, но когда я сделать запрос к адресу, кроме 'default.aspx', я получаю ошибку 404 от статического обработчика файла.

Есть ли у вас какие-либо идеи, как я могу это исправить?

величину изображения here enter image description here

+0

его вид, как 'ahmet', не проходит от asp.net, и по этой причине RewritePath не работает. – Aristos

+0

Yep RewritePath не работает, и именно поэтому я спрашиваю, как это исправить. –

ответ

3

Вы должны проверить настройки удостоверения пула приложений. Убедитесь, что для приложения AppPool Identity вашего веб-приложения установлено, что ApplicationPoolIdentity и Managed Pipeline Mode должны быть интегрированы.

Затем проверьте модули веб-конфигурации system.webserver и включите эту конфигурацию в своей веб-конфигурации приложения.

<system.webServer><modules runAllManagedModulesForAllRequests="true"> </modules></system.webServer> 
+0

Спасибо, сэр! Только то, что мне нужно для моего переписывания! – f2lollpll

+0

Управляемый режим конвейера не может быть интегрирован, потому что у нас есть загрузка классического ASP, который должен запускаться в классическом режиме. – garryp

1

У меня возникла аналогичная проблема. У меня есть класс перезаписи URL-адресов в папке APP_Code, работающий на сервере разработки Visual Studio 2008 и IIS 6.5, но не в IIS 7.5. «OnBeginRequest», похоже, не срабатывал, и я получал ту же ошибку 404. После довольно много проб и ошибок я нашел комбинацию, которая решила мою проблему:

В IIS 7.5 под основными настройками веб-сайта изменился параметр пула приложений на «Классический .NET AppPool».

В Web.config, я добавил следующие ссылаться на класс URL переписывания:

<httpModules> 
    <add name="*URLRewriteClassName*" type="*Namespace.URLRewriteClassName*"/> 
    </httpModules>  

Поскольку вы выполняете код переписывания из глобального класса приложений я бы попытаться изменить пул приложений первый и посмотреть, что случается. Надеюсь, это поможет и удачи!

Смежные вопросы