Weather2 vs Weather - 重命名 mvc 控制器的操作如何导致 ajax 请求失败?

Weather2 vs Weather - how renaming mvc controller's action can result in ajax request failure?

您好,我有一个 MVC 应用程序,其中包含 1 个视图索引和几个正在通过 jQuery.load() 函数加载到相应 div 中的部分视图。现在我看到一个非常奇怪的行为:

现有代码:

    public ActionResult Weather()
    {
        return PartialView(WeatherManager.GetWeather());
    }

$('#weather').load('Home/Weather');

生成此 javascript 错误:

请注意,根本没有调用该操作,就像 ajax 调用被阻止一样。

但是!,如果我只是将控制器的操作重命名为 Weather2

并将 jQuery 调用更改为 $('#weather').load('Home/Weather2');

然后一切正常:)

我不知道为什么会这样。

没有任何代码更改,只是将 Weather 重命名为 Weather2,仅此而已。

有什么想法吗?

P.S> 我不想让 google oauth 代码背后的问题过于复杂,只是因为天气操作没有使用 google oauth,Google Oauth 是用于其他两个操作(日历和 Gmail)。是的,我不清楚为什么这里涉及对 google oauth 的请求。提供更多细节,跟踪显示重命名操作 Weather2 -> Weather 导致 Response Headers 被更改,以下是屏幕截图:

另一件事 - 当我直接导航到 http://localhost/Homepage/Home/Weather 时,请求被重定向到

http://localhost/Homepage/AuthCallback/IndexAsync?state=http://localhost/Homepage/Home/Weather43537229&code=4/ZQExqQ1-1PvS87bn87g986t98y6bcnXfry4RuzdyAQkTgDNMs.Ym8n4sn9PwjkhIBIB0ZRONyF65E5ZflQI

失败:

然而,在将操作重命名为 Weather2 并导航到它 http://localhost/Homepage/Home/Weather2 之后,一切都奇迹般地起作用了:

这怎么可能???

找到问题了! 那是一个卡在 IIS 托管中的该死的孤立应用程序(或幽灵应用程序或僵尸应用程序):) 有一些相关的文章:

http://social.technet.microsoft.com/wiki/contents/articles/1500.hunting-zombies-how-to-remove-orphaned-iis-web-applications.aspx

https://serverfault.com/questions/283467/removing-phantom-applications-from-application-pools-in-iis7

http://weblog.west-wind.com/posts/2008/Aug/09/Editing-Applicationhostconfig-on-64-bit-Win2008

我发现编辑 c:\windows\system32\inetsvr\config\applicationhost.config - 解决僵尸应用程序问题的最简单方法。

天哪,找那个该死的东西需要时间...