随着新的 171010-1400 Windows 版本和 Visual Studio Update 4,我之前的工作配置变得混乱。正如我从 Windbg 输出中看到的,iisexpress.exe 在第一个或第二个请求上失败,我猜它与设置 cookie 有关。 我从调试中看到的所有内容如下:
ModLoad: 00007ff9`417a0000 00007ff9`417cb000 C:\WINDOWS\system32\dwmapi.dll
18312 w3wphost!W3WP_HOST::IncrementMessages [w3wphost.cxx @ 4073]:IncrementMessages called
(4a30.4788): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\IIS Express\IISUTIL2.dll -
IISUTIL2!IsLocalRequest+0x2e:
00007ff9`02766d5e 0fb702 movzx eax,word ptr [rdx] ds:00000000`00000000=????
我在哪里可以获得有关此 IsLocalRequest 调用的更多信息?我猜 IISExpress.exe 不是开源的。
更新1:我认为 IISUTIL dll 不在符号服务器上:
BGHELP: ntdll - public symbols
c:\temp\localsymbols\ntdll.pdb\186E113737814D3E2749831F5FE67D621\ntdll.pdb
Symbol search path is: SRV*c:\temp\localsymbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: srv*c:\temp\localsymbols*http://msdl.microsoft.com/download/symbols
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred SRV*c:\temp\localsymbols*http://msdl.microsoft.com/download/symbols
SYMSRV: BYINDEX: 0x16
c:\temp\localsymbols*http://msdl.microsoft.com/download/symbols
iisutil2.pdb
AA5E50675E9E42B0950F0C58B916E2671
SYMSRV: UNC: c:\temp\localsymbols\iisutil2.pdb\AA5E50675E9E42B0950F0C58B916E2671\iisutil2.pdb - path not found
SYMSRV: UNC: c:\temp\localsymbols\iisutil2.pdb\AA5E50675E9E42B0950F0C58B916E2671\iisutil2.pd_ - path not found
SYMSRV: UNC: c:\temp\localsymbols\iisutil2.pdb\AA5E50675E9E42B0950F0C58B916E2671\file.ptr - path not found
SYMSRV: HTTPGET: /download/symbols/iisutil2.pdb/AA5E50675E9E42B0950F0C58B916E2671/iisutil2.pdb
SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV: HTTPGET: /download/symbols/iisutil2.pdb/AA5E50675E9E42B0950F0C58B916E2671/iisutil2.pd_
SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV: HTTPGET: /download/symbols/iisutil2.pdb/AA5E50675E9E42B0950F0C58B916E2671/file.ptr
SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV: RESULT: 0x80190194
DBGHELP: C:\Program Files\IIS Express\iisutil2.pdb - file not found
DBGHELP: iisutil2.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\IIS Express\IISUTIL2.dll -
DBGHELP: IISUTIL2 - export symbols
就我而言,问题的根源是
StackoverflowException
。我的输出窗口中没有任何消息表明此问题。
出于历史目的。我遇到这种情况是因为代码错误。
就我而言,尝试使用以下方法从一种类型转换为另一种类型 AutoMapper.Mapper.Map(model),但没有设置映射定义。 此调用也是在隐式运算符中进行的:
public static implicit operator DestinyType (ModelType model)
{
return Mapper.Map <DestinyType> (model);
}
我的选择是使用类似的东西:
public static implicit operator DestinyType (ModelType model)
{
var mapper = Mapper.Configuration.FindTypeMapFor <ModelType, DestinyType> ();
if (mapper == null)
{
throw new InvalidOperationException ();
}
return Mapper.Map <DestinyType> (model);
}
我也遇到了这个问题,IIS Express 因这个错误而关闭。挠头一阵后,我发现它来自于我的一个类中 IDisposable 的错误实现。
根据微软的说法(https://github.com/Microsoft/dotnet/issues/523): 1) 这是 httpd.sys 中的一个已知回归,很快将在开发人员版本中修复 2) IIS Express pdb 将不会被发布,这是他们的“有意识的决定”
就我而言,这是因为在某些情况下有两个 getter 依赖于彼此的值。
例如:
propA有时取决于propB的值
和
PropB有时取决于propA的值
在某些情况下,这会导致对属性的递归无限调用。这会导致 iisExpress 挂起一段时间,因为它向堆栈发出大量异常,然后出现错误 “iisexpress.exe”已退出,代码为 3221225477 (0xc0000005)“访问冲突””
我遇到此错误消息是因为我将视图命名为“View”,将其更改为“Details”解决了该问题。