C# 获取错误:字典中不存在给定的密钥。生产中
我正在使用ASP.NET4.0W/a C#Web服务。这还利用了一个C#库,该库在开发和其他应用程序(Skype bot和Windows窗体)中运行良好 我使用JQuery通过JSON与web服务通信。在开发过程中,这是很好的。在生产中,它部分起作用。我可以使用一些命令,但其他命令只会抛出此错误:C# 获取错误:字典中不存在给定的密钥。生产中,c#,asp.net,windows,web-services,iis,C#,Asp.net,Windows,Web Services,Iis,我正在使用ASP.NET4.0W/a C#Web服务。这还利用了一个C#库,该库在开发和其他应用程序(Skype bot和Windows窗体)中运行良好 我使用JQuery通过JSON与web服务通信。在开发过程中,这是很好的。在生产中,它部分起作用。我可以使用一些命令,但其他命令只会抛出此错误: Error: The given key was not present in the dictionary. 我不确定从哪里开始。我无法单步执行代码,因为它只发生在prod中。我检查了IIS日志,
Error: The given key was not present in the dictionary.
我不确定从哪里开始。我无法单步执行代码,因为它只发生在prod中。我检查了IIS日志,每个请求都有200个状态,因此它似乎是应用程序本身内部的东西。您知道从何处开始吗?错误表明服务器端代码试图使用字典中不存在的密钥访问字典 我建议修改代码,将错误处理放在所有字典访问中。处理错误时,记录试图从字典中读取的密钥 记录异常详细信息时,明智的做法是记录所有可用信息
Exception.ToString()
此错误表明服务器端代码正试图使用字典中不存在的密钥访问字典 我建议修改代码,将错误处理放在所有字典访问中。处理错误时,记录试图从字典中读取的密钥 记录异常详细信息时,明智的做法是记录所有可用信息
Exception.ToString()
问题是我使用WebClient调用了一个需要登录的URL。我设置了我的应用程序池和我的域凭据,然后我可以调用提示登录的页面
调用页面后,我就能够填充一个列表并在其中循环。引发上述错误的原因是我在一个空列表中循环。问题是我使用WebClient调用了一个需要登录的URL。我设置了我的应用程序池和我的域凭据,然后我可以调用提示登录的页面
调用页面后,我就能够填充一个列表并在其中循环。引发上述错误的原因是我在一个空列表中循环。您可以从正在用作
declare @c uniqueidentifier
while(1=1)
begin
select top 1 @c = conversation_handle from dbo.yourqueuenqme
if (@@ROWCOUNT = 0)
break
end conversation @c with cleanup
end
在那之后它会起作用的 您可以从正在用作的sqlsrver队列中删除所有队列消息
declare @c uniqueidentifier
while(1=1)
begin
select top 1 @c = conversation_handle from dbo.yourqueuenqme
if (@@ROWCOUNT = 0)
break
end conversation @c with cleanup
end
在那之后它会起作用的 可能有很多东西。取决于词典的填充方式。如果它是从一个数据库中填充的,而您使用另一个数据库进行生产,这可能是您的问题。正如@SLaks所说,堆栈跟踪会有所帮助。可能会有很多东西。取决于词典的填充方式。如果它是从一个数据库中填充的,而您使用另一个数据库进行生产,这可能是您的问题。正如@SLaks所说,堆栈跟踪会有所帮助。调用
Exception.ToString()
可能更好:它提供了上述所有信息,在某些情况下还提供了更多信息(例如FileNotFoundException
在适当的情况下包括FusionLog)。我添加了错误检查。我在每个代码块周围都放置了try捕获,但没有抛出异常。@Sugitime:我保证,如果您收到了该消息,会在某个地方抛出异常。是的,您必须是正确的。好的,我会继续查看消息的来源。好的,我更新了DLL,但由于某些原因,应用程序仍然使用旧的DLL。DLL未在服务器上注册。即使我删除DLL并尝试运行使用它的命令,该命令仍会处理(然后抛出错误)。你知道如何取消缓存这个DLL吗?调用Exception.ToString()
可能更好:它提供了上面所有的信息,在某些情况下还提供了更多信息(例如FileNotFoundException
在适当的情况下包括FusionLog)。我添加了错误检查。我在每个代码块周围都放置了try捕获,但没有抛出异常。@Sugitime:我保证,如果您收到了该消息,会在某个地方抛出异常。是的,您必须是正确的。好的,我会继续查看消息的来源。好的,我更新了DLL,但由于某些原因,应用程序仍然使用旧的DLL。DLL未在服务器上注册。即使我删除DLL并尝试运行使用它的命令,该命令仍会处理(然后抛出错误)。你知道如何去缓存这个DLL吗?