В моем контроллере Asp.Net MVC5 я пытаюсь запустить следующий код для выполнения классического сценария asp:
public ActionResult Index()
{
Server.Execute("~/classic/test.asp");
return new EmptyResult();
}
Но получите сообщение об ошибке. Я попытался изменить /classic/
папку как на свое приложение (пул), так и на обычную папку, но такую же ошибку. Я также проверил сопоставления обработчиков HTTP в IIS для сайта.net, а .asp
- признанный обработчик, поэтому он определенно там. Может быть, есть способ сделать метод URL Rewrite, который позволит вам выполнить любой скрипт в нем? Похоже, что ASP.NET httpHandler не настроен для старых страниц.ASP, но, может быть, это можно изменить?
Кто-нибудь знает, как запустить классический сценарий asp через контроллер, не используя WebRequest
? Это возможно с помощью WebRequest
но это также больше накладных расходов, чем хотелось бы.
Вы могли бы подумать, что Microsoft предоставит эту функцию для людей, пытающихся мигрировать, я надеюсь на это.
Используйте Server.TransferRequest()
в представлении вместо контроллера. Как это:
Посмотреть:
@{Server.TransferRequest("~/classic/test.asp");}
Это сделает классическую страницу ASP, как вы ожидаете.
Я решил получить сообщение об ошибке "Нет HTTP-обработчика для типа запроса" GET " с другой функцией из System.Web.HttpResponse и сменой файла web.config.
Пример:
Response.WriteFile("~/include/head.shtml");
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
Чтобы использовать Server.Execute("~/include/head.shtml")
я должен изменить пул приложений в IIS на
"Asp.Net v4.0 Classic"
,
Server.TransferRequest()
вместо этого?