访问虚拟文件夹时,IIS 7 报错500错误

4
我在使用IIS时遇到了问题,试图访问虚拟文件夹路径。
我的应用程序(.Net 3.5 SP1, MVC 1.0)生成的报告结果文件通过虚拟路径着陆在基于Unix的vfiler上(我认为目标是NetApp设备)。当用户通过IIS(托管在WinServ 2k8 R2 64-bit上)的http请求尝试访问报告时,他们会收到以下500错误:
Log Name:      Application
Source:        ASP.NET 2.0.50727.0
Date:          3/14/2012 1:07:20 PM
Event ID:      1185
Task Category: File Monitoring
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      %APPLICATION_SERVER%
Description:
Failed to start monitoring changes to '%PATH_TO_FILE_SHARE%' because the network BIOS command limit has been reached. For more information on this error, please refer to Microsoft knowledge base article 810886. Hosting on a UNC share is not supported for the Windows XP Platform.

我在这个环境中的可见度不高(我是应用程序的供应商),但问题似乎是累积性的,仅当IIS代理连接时才会出现。如果我在客户机器上手动输入路径到命令/运行窗口,我就能够访问文件-这让我相信它不是基于权限的。我也能够在IIS管理器中访问它。当我进行IISRESET时,问题会短暂缓解。
有什么想法吗?我尝试按照(相当陈旧的)KB文章中的说明操作,但没有帮助。
编辑:我应该指出这是一个生产系统。
2个回答

1
这是我在使用IIS进行主机托管时遇到的最严重的问题之一。
以下是我们尝试过的所有方法,但都没有用 - 我会将它们发布出来,以防万一它们可能对您有用:
在IIS服务器上:
  1. 在HKLM\Software\Microsoft\ASP.NET处,将DWORD FCNMode更改/添加为1以禁用。
  2. 在HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET处,将DWORD FCNMode更改/添加为1以禁用。
  3. 在HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\Parameters处,将DWORD MaxCmds更改/添加为> 50的值,最大值为65535-我们尝试了一直到65535的值。
  4. 在HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters处,将DWORD MaxMpxCt更改/添加为> 50的值,最大值为65535-在IIS框中,您需要将其配置为与MaxCmds相同。
  5. 将应用程序池更改为"无托管代码"
  6. 停止IIS检查子目录中的web.config文件-转到IIS管理器中的顶级服务器->配置编辑器->部分"system.applicationHost/sites"->打开集合->在每个站点中,将virtualDirectoryDefaults->allowSubDirConfig更改为False->关闭集合编辑器并单击应用。

在文件服务器上:

  1. 在HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters的DWORD MaxWorkItems中更改/添加值> 4096,最大值为65535。最简单的计算方法是IIS框的* MaxCmds值 - 或者只需将其设置为65535。
  2. 在HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters的DWORD MaxMpxCt中更改/添加值> 50,最大值为65535。我认为这是客户端和服务器之间协商的结果,较小的值将被应用。我们尝试了各种值,直到最大值。

随着我们尝试/失败各种新选项,我会继续添加到这个答案中。还有一件事我应该提到-如果你遇到奇怪的不稳定的UNC路径分辨率错误:“指定的网络名不再可用或您没有权限”-暂时尝试禁用Jumbo MTU和任何网卡的卸载选项(在IIS和文件服务器框上),看看是否有帮助(它修复了我们使用HP网卡的问题)。

更新: 我们在文件服务器(Linux NAS)上启用了SMB 2,并且通过已经进行的注册表更改,最终停止了收到可怕的网络BIOS限制错误。


1

为了参考,以下文章帮助我们解决了问题:http://blogs.msdn.com/b/carloc/archive/2009/09/06/hosting-on-a-unc-share-is-not-supported-for-the-windows-xp-platform.aspx

我们将 HKLM\Software\Microsoft\ASP.NET\FCNMode 值设置为“2”,这能够将我们的多路连接减少到可管理的值。微软的官方建议是增加 SAN 上的多路连接限制,但对我们来说不可行,因为这将需要推送托管在 SAN 上的所有 CIFS 共享。

希望这能帮助未来的某个人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接