2010-12-20 60 views
0

我有一个asp页面,它使用include来包含某些页面,具体取决于查询字符串。 我已经在asp.net中构建了此页面的附加内容,并且希望将我的新页面包含在asp页面中,但是出现此错误。使用asp include include asp.net页面

Active Server Pages error 'ASP 0140' 

    Page Command Out Of Order 

    /d//Default.aspx, line 1 

    The @ command must be the first command within the Active Server Page. 

回答

2

您不能在ASP.NET页面中包含ASP.NET页面。不过,你有两个选择。

最简单的将是包括ASP.NET页面作为你的ASP页面的iframe。您可以使用ASP动态设置服务器端IFrame的URL。

另一种选择是写一个包装.NET的DLL,将通过一种方法使你的页面。然后,您可以在COM +中注册该DLL,以便它可以在ASP页面中由VBScript调用。显然这更复杂。

如果第一个选项有效,那么就去做吧。否则,你可能不得不弄清楚如何实现第二个。

+1

我会去与iframe的想法 – MyHeadHurts 2010-12-20 17:47:03

+0

工作太棒了! – MyHeadHurts 2010-12-20 18:22:36

1

我很确定ASP中的包含功能是严格包含其他ASP文件,其中包含的代码将被ASP引擎解析。它不知道如何处理ASP .NET代码。

1

您不能在ASP.NET页面中包含ASP.NET页面。你不能将它们混合在同一个响应中。

使用Response.Redirect做出重定向到ASP.NET页面来代替。

注意,你实际上是选择哪一页在你的ASP页面,包括你总是包括网页所有,因为包括做任何ASP代码开始之前,然后只在条件语句决定运行哪个页面。

0

我同意贾斯汀Niessner的选择,但也有另一种简单的方法,包括ASP.net页的内容到你的经典的ASP页面,这可能会满足您的需求。

如果要包括所导致的ASP.net页面的HTML,可以采取以下方法:

Dim Url 
Url = "http://pathtoyourasp.net/script/somescript.aspx?param=value"  

' Create XML object, make server side request 
Dim objXML: set objXML = Server.CreateObject("Msxml2.ServerXMLHTTP") 
objXML.Open "GET", Url, True 
objXML.Send 

' Retry a few times just in case: it's classic ASP. 
Dim try_times: try_times = 0 
While objXML.ReadyState <> 4 and try_times < 5 
    objXML.waitForResponse 2 
    try_times = try_times + 1 
Wend 
If objXML.ReadyState = 4 then 
    ' Success, write the response 
    Response.Write objXML.ResponseText 
Else 
    ' Failed, show error 
    Response.Write "The page failed to load." 
End If 
Set objXML = Nothing 
+0

非常有趣的生病尝试 – MyHeadHurts 2010-12-30 14:02:00