我一直在网上看,我有一些问题,希望有人在这里可以回答我.我正在尝试解决导致IIS崩溃的问题.该服务呼叫应该是一种火灾和忘记呼叫类型.如果失败,我们禁止并记录异常.因为它是一个长期运行的服务调用,所以它被实现为异步.当前实现有几个嵌套方法调用如下:
// in first service
public void PerformService(some params)
{
// setup and validation
DoAction();
}
private void DoAction()
{
// final setup
OtherService.FireAndForgetAsync(some params);
}
// in the other service (OtherService)
public async Task FireAndForgetAsync()
{
await Task.Run(() =>
{
try
{
// do some long running stuff
}
catch (Exception e)
{
ErrorLogger.LogError(e)
}
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,我们在一个循环(从0到多次迭代)中调用PerformService并且当前得到以下异常:
System.NullReferenceException: Object reference not set to an instance of an object. at
System.Web.ThreadContext.AssociateWithCurrentThread(Boolean setImpersonati onContext) at
System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationCo ntext) at
System.Web.LegacyAspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback …Run Code Online (Sandbox Code Playgroud) 我只是想构建一个productIDs的字典
dim viewableProductIDs : set viewableProductIDs = CreateObject("Scripting.Dictionary")
do while not rsEntry.EOF
viewableProductIDs.Add rsEntry("ProductID"), true
rsEntry.MoveNext
loop
Run Code Online (Sandbox Code Playgroud)
rsEntry是一个ADODB Recordset,我通过详尽的debbug打印确保我的查询确实返回了唯一的productID,并且记录集没有重复项.然而有些人,vbscript坚持认为有重复.它会添加第一个罚款,但之后它会在所有其他方面出错.我试着用现有钥匙检查它周围,但是有些人认为它们都是,但第一个存在.然后最后我留下了一个只有一个条目的字典.
有没有人知道它为什么这样做?