gpt4 book ai didi

performance - ASP.NET MVC : how is this possible ? 参数字典包含参数 'x' 的空条目

转载 作者:行者123 更新时间:2023-12-01 06:41:34 25 4
gpt4 key购买 nike

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

好的..让我们把代码放在上下文中。

我有这样的 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

现在的问题是,我放置了一些跟踪和尝试/捕获(用于测试)以确保 jQuery 永远不会使用空或未定义的“计数”调用 GetWaitingMessages,但就健康监控异常(exception)而言:GetWaitingMessages 已实例化并传递 null 作为一个参数。 (据我所知,MVC 通过反射实例化方法)

顺便说一句:错误只发生在数千个请求中可能只有 1 个

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

所以我想,mvc 甚至不应该命中该方法,因为不应该有签名匹配..

MVC 是否有高流量网站的问题(即多线程问题)?

上面提到的站点在具有网络负载平衡和 IP 关联性的 5 个网络场服务器的集群上运行。

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

该站点正在使用 url 重写将域映射到区域(即 test.com 将简单地将/test 插入到 url 中),因为它是一个可换肤和多语言的白标站点。

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

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

由于我们需要运行,因此被认为无用的 HttpModules 在 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 转储到日志中,它完全是空的 ..

IIS(最终 url 重写)可能会在途中的某个地方混淆它的东西吗?

——

任何帮助将不胜感激..我正在努力了解这里可能出现的问题。

谢谢,罗伯特

最佳答案

您的请求是什么类型的 xmlHttp服务器的问题( GETPOST 或其他)?
GetWaitingMessages的定义是什么? Action 方法?

很可能是接受的动词或参数名称不匹配的情况。

关于performance - ASP.NET MVC : how is this possible ? 参数字典包含参数 'x' 的空条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com