【问题标题】:Server.Transfer from ASP to ASP.NetServer.Transfer 从 ASP 到 ASP.Net
【发布时间】:2017-06-16 10:10:38
【问题描述】:

这是我的场景:

桌面应用程序使用 XML 数据发布到我的 Web 应用程序中的特定 ASP 页面。 Web 应用程序正在重写为 ASP.Net;但是,该特定页面的 Url 不能更改(由于桌面应用程序)。

我最初的想法是简单地将请求从经典 ASP 页面“转发”到一个新的 ASPX 页面,该页面将处理该请求,方法是像这样更改 ASP 页面:

<% Server.Transfer("MyApp/NewXmlHandler.aspx") %>

但是,这不起作用:

Active Server Pages 错误“ASP 0221” @Command 指令无效 /MyApp/NewXmlHandler.aspx,第 1 行

有没有一种简单的方法可以获取 ASP 页面中发布的数据,并将其转发到另一个页面?

谢谢!

【问题讨论】:

    标签: asp.net asp-classic


    【解决方案1】:

    将表单值放入查询字符串(对它们进行 URL 编码),然后改用 Response.Redirect。 Server.Transfer 恢复执行,您无法在 ASP 3.0 中执行 ASP.NET 页面。

    【讨论】:

    • 我认为这里的两个潜在问题是 1) url 是否有长度限制?和 2) 我不知道桌面应用程序是否可以响应重定向请求
    • 嗯,另一种解决方案是将它们放入会话并共享会话:msdn.microsoft.com/en-us/library/aa479313.aspx
    【解决方案2】:

    如果其他人遇到这种情况,我最终会像这样传递请求:

    <%
        Dim postData
        Dim xmlhttp 
    
        'Forward the request to let .Net handle
        Set xmlhttp = server.CreateObject("MSXML2.ServerXMLHTTP")
        xmlhttp.Open "POST","http://127.0.0.1/MyApp/NewXmlHandler.aspx",false
    
        xmlhttp.send(Request)
    
        Response.Write xmlhttp.responseText
    
        Set xmlhttp = nothing
    %>
    

    【讨论】:

      【解决方案3】:

      你可以使用 ASP.NET 路由吗?如果是这样,只需将 POST 路由到 .aspx 页面而不是 .asp 页面。

      【讨论】:

        【解决方案4】:

        我正在解决类似的问题,但我也必须处理授权问题。在您的情况下,它要简单得多,对于那些可能遇到此问题的人,我认为 URLRewrite 或 .htaccess 可以解决问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-16
          • 1970-01-01
          • 2011-06-19
          • 2011-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多