【问题标题】:ASP.Net 3.5 Ajax working in Subdomain but NOT SubdirectoryASP.Net 3.5 Ajax 在子域中工作但不在子目录中
【发布时间】:2009-06-15 13:55:43
【问题描述】:

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

我浏览过来自不同来源的数十篇帖子,检查 web.config 文件、ISAP 映射、GAC 程序集、.axd 文件的 404 错误等,但没有一个适用。在解决问题的最后努力中,我将应用程序创建为主站点的子域,而不是子目录 (newapp.mainsite.com),并且 POOF 可以正常工作!一切正常,就像在我的开发机器上一样。

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

时间不多了,因此我们将不胜感激。谢谢!

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

【问题讨论】:

    标签: asp.net-ajax


    【解决方案1】:

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

    【讨论】:

    • 3.5 使用 2.0 dll 运行,所以在 IIS 中的 .net 版本中从来没有指定 3.5 选项。
    【解决方案2】:

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

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

    【讨论】:

    • 如上所述,我已经尝试过了。只是为了验证,我按照您发布的说明再次进行了检查,我仍然看到相同的行为。
    【解决方案3】:

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

    【讨论】:

    • 不,那也没用。需要注意的是,以前,当应用程序既是子目录又是子域时,它与主站点存在于同一个应用程序池中。同样的结果,子域有效,子目录无效。
    • 也许这就是你要找的答案:aspadvice.com/blogs/sswafford/archive/2007/01/25/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 2018-04-24
    • 2010-10-27
    相关资源
    最近更新 更多