iisexpress.exe 因 IsLocalRequest 调用中的访问冲突而开始崩溃

问题描述 投票:0回答:6

随着新的 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
iis-express
6个回答
10
投票

就我而言,问题的根源是

StackoverflowException
。我的输出窗口中没有任何消息表明此问题。


4
投票

出于历史目的。我遇到这种情况是因为代码错误。

就我而言,尝试使用以下方法从一种类型转换为另一种类型 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);
     }

1
投票

我也遇到了这个问题,IIS Express 因这个错误而关闭。挠头一阵后,我发现它来自于我的一个类中 IDisposable 的错误实现。


0
投票

根据微软的说法(https://github.com/Microsoft/dotnet/issues/523): 1) 这是 httpd.sys 中的一个已知回归,很快将在开发人员版本中修复 2) IIS Express pdb 将不会被发布,这是他们的“有意识的决定”


0
投票

就我而言,这是因为在某些情况下有两个 getter 依赖于彼此的值。

例如:

propA有时取决于propB的

PropB有时取决于propA的

在某些情况下,这会导致对属性的递归无限调用。这会导致 iisExpress 挂起一段时间,因为它向堆栈发出大量异常,然后出现错误 “iisexpress.exe”已退出,代码为 3221225477 (0xc0000005)“访问冲突””


-1
投票

我遇到此错误消息是因为我将视图命名为“View”,将其更改为“Details”解决了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.