我想知道是否有人对这里发生的事情有所了解,是否可以指出正确的方向。

确定..let将代码放在上下文中。

我有这样的ajax方法(jquery):

$xmlHttp("/Api/GetWaitingMessages", { count: 20 })
    .always(processResult);

($ xmlHttp仅包装了延迟的jQuery,以及一些基本的$ ajax选项)

在我们的健康监控后台中,我看到了以下内容:
Exception information:
Exception type: System.ArgumentException
Exception message: The parameters dictionary contains a null entry for parameter 'count' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult GetWaitingMessages(Int32)' in 'AjaxController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters

现在的事情是,我放置了一些跟踪和try / catches(用于测试)以确保jQuery永远不会调用带有空或未定义“计数”的GetWaitingMessages,但是就健康监控实例而言:GetWaitingMessages实例化并传递为null参数。 (据我了解,MVC通过反射实例化方法)

顺便说一句:错误仅发生于大约数千个请求中的1个。

GetWaitingMessages的签名为:
public virtual ActionResult GetWaitingMessages(int count)
{
    ....
}

所以我想,因为不应该有签名匹配,所以mvc甚至不应该点击该方法。

MVC在高流量网站上是否存在问题(即多线程问题)?

上面提到的站点在5台具有网络负载平衡和IP亲和力的Web场服务器上运行。

每个服务器在高峰时间大约收到1500个请求/秒。

该站点使用URL重写将域名映射到区域(即test.com只需将/ test插入url),因为它是一个具有外观和多种语言的白色标签站点。

有关网站配置的更多详细信息:

服务ajax请求的控制器装饰有
[SessionState(SessionStateBehavior.Disabled)]

由于我们需要运行而被删除的HttpModule(在这里被认为是无用的):MVC中的runAllManagedModulesForAllRequests =“true”。我本可以设置runAllManagedModulesForAllRequests =“false”,然后尝试找出要添加的内容(按顺序排列),但是发现删除我知道不是必需的内容更简单。
<remove name="AnonymousIdentification" />
<remove name="Profile" />
<remove name="WindowsAuthentication" />
<remove name="UrlMappingsModule" />
<remove name="FileAuthorization" />
<remove name="RoleManager" />
<remove name="Session" />
<remove name="UrlAuthorization" />
<remove name="ScriptModule-4.0" />
<remove name="FormsAuthentication" />

以下所有内容均已在web.config中激活并配置
<pages validateRequest="false" enableEventValidation="false" enableViewStateMac="true" clientIDMode="Static">

and also:
urlCompression
staticContent
caching
outputCache

编辑:刚刚分析了我的跟踪日志。当发生错误时,我看到(Content-Length:8),它对应于(count = 20)。但是,我在日志中看不到任何查询参数。我将HttpInputStream转储到日志中,它完全是空的..但是就像我刚才提到的,日志还说Content-Length = 8,所以这里有些错误。

IIS(最终可能是url重写)会在整个过程中将其内容混淆吗?

--

任何帮助将不胜感激..i我正在努力尝试弄明白这里可能出了什么问题。

谢谢罗伯特

最佳答案

您的xmlHttp向服务器发出哪种类型的请求(GETPOST或其他)?
GetWaitingMessages操作方法的定义是什么?

不正确的接受动词或自变量名称很可能是这种情况。

09-11 19:33
查看更多