2010-06-09 44 views
2

我需要從ASP MVC控制器動作呈現ASP頁面到字符串。我可以使用Server.Execute()來呈現.aspx頁面,但不是.asp頁面。Server.Execute - 從MVC控制器動作呈現.ASP

下面是我使用的是什麼:

public ActionResult Index() 
    { 
     Server.Execute("/default.asp"); 
     return new EmptyResult(); 
    } 

返回

`No http handler was found for request type 'GET'` 

有什麼建議?我可以用web請求做類似的事情,但我寧願避免回送請求的開銷。

+0

什麼版本的IIS您使用的是?如果你使用集成管道7? – AnthonyWJones 2010-06-10 10:34:08

+0

是的,IIS 7.我的生產服務器在Win2k3上運行IIS6。 – 2010-06-10 14:49:22

回答

1

上次我檢查,當在ASP.NET 3.5或4.0上下文中運行並使用ASP.NET時,Server.Execute不會執行.ASP頁面,因爲沒有爲傳統配置ASP.NET httpHandler。 ASP頁面。

我會做的是使用WebRequest來執行.ASP頁面並存儲結果,然後將響應的字符串輸出轉儲爲字符串,然後在執行控制器方法時轉儲該字符串。這樣,你甚至可以在不同的服務器上執行.ASP頁面(Server.Execute不是農場友好的!)

+0

這就是我所說的「回送請求」。它可以工作,但顯然會帶來一些額外的開銷。 – 2010-06-17 19:33:55

0

使用Server.TransferRequest()而不是.Execute()它應該工作。如果它不在控制器工作,把它放在你的觀點,而不是像這樣:

@{Server.TransferRequest("/default.asp");}