我想知道是否有人对这里发生的事情有所了解,是否可以指出正确的方向。
确定..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
向服务器发出哪种类型的请求(GET
,POST
或其他)?GetWaitingMessages
操作方法的定义是什么?
不正确的接受动词或自变量名称很可能是这种情况。