ASP.Net 3.5 Ajax在子域但非子目录中工作

时间:2009-06-15 13:55:43

标签: asp.net-ajax

我有一个问题,我现在已经战斗了几天。我在VS 2008 SP1中开发了一个Web应用程序,它利用了许多可用的.Net 3.5 AJAX功能,以及许多jQuery代码。在我的本地计算机(XP专业版SP3,.Net 3.5 SP1)上进行测试时,该应用程序运行良好。此应用程序将作为主站点(www.mainsite.com/newapp)的子目录部署到我们的生产服务器(2K3,.Net 3.5 SP1)。主站点是.Net 2.0站点。当我将此应用程序作为子目录部署到我们的生产服务器并运行它时,我得到难以捉摸的'Sys.WebForms.PageRequestManager'为null或未定义。

我查看了各种来源的数十篇帖子,检查了web.config文件,ISAP映射,GAC程序集,.axd文件的404错误等,但都没有适用。在解决问题的最后努力中,我创建了应用程序作为主站点的子域而不是子目录(newapp.mainsite.com)和POOF它的工作原理!一切正常,就像在我的开发机器上一样。

所以我的问题是,如何让它作为子目录工作?不,子域不是一个选项,因为这是一个应用程序的概念证明,最终可能会成为100个子目录。我错过了什么?我应该检查什么?在任何人问之前,是的,当它是一个子目录时,它被配置为IIS上的一个应用程序(我实际上已经尝试过它作为一个应用程序和一个注册为应用程序的虚拟目录,都没有工作)。

时间已经不多了,所以任何帮助都会非常感激。谢谢!

更新:为了帮助证明服务器和站点都是为.Net 3.5配置的,我使用实体框架以及LINQ to SQL对象来执行我的数据操作。所有这些功能在子域和子目录环境中都能正常工作。我知道这与网站访问MS Ajax jscript文件有关,我只是不知道如何弄清楚具体是什么问题以及如何纠正它。

3 个答案:

答案 0 :(得分:0)

当您在IIS中将其配置为自己的应用程序时,您是否指定它使用3.5而不是2.0,就像它的父级一样?

答案 1 :(得分:0)

尝试为新应用程序使用虚拟目录。因此,在IIS和您的网站下,删除您为新应用程序创建的子目录。接下来创建一个与子目录同名的虚拟目录(右键单击网站,然后转到add->虚拟目录)。接下来设置虚拟目录的所有属性,就像设置网站一样,然后将文档根目录指向新应用程序所在的目录。这应该允许他们同时运行并在不同的过程中运行。

至于设置.net版本。 IIS中没有.Net 3.5选项,只有1.1和2.0。使用2.0,因为3.5仍然使用2.0 asapi .dll。

答案 2 :(得分:0)

尝试在与主站点不同的应用程序池下运行虚拟目录,因此该应用程序将存在于自己的应用程序域中。如果您仍想使用相同的会话,请编辑web.config以包含machinekey元素,并将相同的机器密钥放在web.config中