无法从经典asp应用程序

时间:2017-09-18 11:11:05

标签: jquery asp.net ajax web methods

我目前正在开发一个应用程序,我用经典的asp编写这个旧的应用程序代码。对于一个增强要求,我在该应用程序中添加了一个.aspx页面(因为我更喜欢asp.net而不是经典的asp)。 我的.aspx页面包含一些标记和jquery代码(一些事件更改代码)以及对服务器端Web方法的ajax调用。 [作为一个单独的解决方案(asp.net),我的.aspx代码工作得很好但是当我在经典的asp应用程序中集成.aspx页面时,jquery ajax对服务器端Web方法的调用永远不会到达。它总是抛出错误。 (我使用了闭包)。]我真的有可能实现吗?如果是的话,怎么样?或者可能是错误的原因是什么? 我也尝试从.aspx中删除ajax代码段,并尝试在服务器端编写相同的事件更改代码..也不工作。 任何建议,将不胜感激。提前谢谢!

编辑:

jquery ajax call -

$。AJAX({                     类型:“POST”,                     url:“xyz.aspx / someMethod”,                     data:“{sampleString:'”+ sampleString +“'}”,                     contentType:“application / json; charset = utf-8”,                     dataType:“json”,                     cache:false,                     成功:函数(数据){                         //成功                     },                     错误:function(data){                         alert(“错误:”+ data.d); //抛出错误 - 未定义。                     }                 });             });

网络方法 -

[WebMethod]
    public static string someMethod(string sampleString)   
    {
        try
        {
            //my actual code logic
        }
        catch (Exception ex)
        {}
    }

当我在asp.net解决方案中运行代码时,上面的代码段非常好用。但我有一个要求,我需要取出这个单独的.aspx页面(显然还有.aspx.cs)并将其保存在经典的asp应用程序的虚拟目录中。此应用程序中的所有其他页面都是.asp页面(vb脚本),我们只有一个不同的页面,即.aspx。

因此,为了在IIS中托管和运行这个经典的asp应用程序,我创建了一个相同的虚拟目录,然后将我的.aspx和.aspx.cs页面单独放在该目录中。 (没有web.config,没有app_start,根本没有app_code文件夹。只有两个文件)我能够从该目录在浏览器中加载.aspx页面。我可以看到在浏览器中呈现的实际页面。但功能根本不起作用。

1 个答案:

答案 0 :(得分:0)

经过数百次试验和错误后,我得出的结论是,我正在努力实现或使其成功的方案在我的案例中是不可能的。我将.aspx页面(.aspx和.aspx.cs)单独放在经典的asp应用程序目录中。页面呈现成功,没有任何问题。但是在页面完全加载后,如果我尝试执行该.aspx页面中编写的任何服务器端代码,它就不起作用。 编写的脚本代码(jquery)仅在需要调用客户端代码的范围内运行。一旦提供.aspx页面,就无法调用服务器端方法(即只有page_load事件及其联合方法工作)。你根本无法再从同一页面调用页面方法(因为page_load已被触发。也没有其他事件像button_click或dropdownIndex_changed一样被触发) 可能的原因 - 没有托管.aspx页面的运行时环境。所有的.aspx页面(在它首次提供时)都被经典的asp作为“命令”处理/执行。 但是我仍然在根级别上研究这种行为。

欢迎任何更多的建议或想法。