【问题标题】:Server.Execute() or Transfer() in classic ASP to an aspx defined in Web.config经典 ASP 中的 Server.Execute() 或 Transfer() 到 Web.config 中定义的 aspx
【发布时间】:2015-07-31 15:32:55
【问题描述】:

Server.Execute() 或 Transfer() 从经典 ASP 文件到物理 ASPX 页面与升级到 IIS 一起使用。

示例: 在test.asp中,

Server.Execute("/test.aspx")

但是,如果在 Web.Config 中定义了 aspx 路径以触发 dll 中的处理程序,则 Server.Execute() 和 Transfer() 在经典 ASP 文件中不起作用。

示例: 在 web.config 中

<add name="test_*" verb="*" path="test.aspx" type="testhttphandler, {fully qualified dll name}">

*请注意,在 web.config 中定义路径的方式没有任何问题。我只是想展示一个例子,我为格式道歉。

在test.asp中

Server.Execute("/test.aspx") 

我收到一个错误:

Server object error 'ASP 0228 : 80004005'
Server.Execute Error
/test.asp, line 18
The call to Server.Execute failed while loading the page.

我知道有很多方法可以解决这个问题,但我想了解为什么这不起作用。我个人喜欢用最少的文件使事情尽可能简单,所以我探索了我上面探索的内容。如果您有任何见解,请告诉我。

谢谢!

【问题讨论】:

    标签: asp.net asp-classic web-config


    【解决方案1】:

    ASP-Classic (asp.dll) 和 ASP.Net (aspnet_wp.exe) 使用不同的进程,Server.Execute 尝试使用 ASP-Classic 解释器来... err... 解释 ASP.Net,它它不适合这样做。 Server.Execute 尝试使用调用它的同一进程“执行”脚本:asp.dll。

    Server.Transfer 到 aspx 文件更有可能为你服务。

    希望这是有道理的。

    【讨论】:

    • 克里斯?这有意义吗?
    • 我也用 Server.Transfer() 尝试了同样的事情并得到了同样的结果,这只有在 aspx 页面是物理的而不是在 web.config 中定义的情况下才有效。感谢您解释它是如何工作的!
    • 我猜这意味着 Server.Transfer() 仍然在经典的 asp 解释器下执行。
    • 否:Server.Transfer 将原始请求传递到指定的 URL,以由与该文件类型关联的驱动程序处理......它应该可以正常工作到 Server.Transfer 到 ASPX 页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2017-11-16
    相关资源
    最近更新 更多