【发布时间】:2020-07-08 03:23:00
【问题描述】:
我在 IIS 上遇到了一个问题,它困扰了我很多天。在网上搜索了一遍之后,我仍然找不到正确的答案,所以是时候在 StackOverflow 上发帖寻求帮助了。
我在阿里云上创建了一个 Windows Server 2016 虚拟机,在阿里云上创建了一个 SMB 文件共享。然后我按照这条指令 (https://github.com/AlibabaCloudDocs/nas/blob/master/intl.en-US/Best%20Practices/Use%20Windows%20IIS%20and%20NAS%20to%20provide%20Web%20and%20FTP%20services.md) 将我的网站放在文件共享上并将其加载到 IIS。问题是此设置适用于 Windows Server 2012 R2 或更低版本,但是在 Windows Server 2016 上显示 dll 加载失败。错误如下所示:
我尝试了一堆设置
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
并在线搜索,但没有任何技巧有效。我还尝试使用进程监视器检查 w3wp.exe 的详细信息,并在 2012 年和 2016 年之间得到了这种差异:
Windows Server 2012's w3wp.exe gives CreateFile: Success
Windows Server 2016's w3wp.exe gives CreateFile: Invalid Network Response
2012 年(左)和 2016 年(右)的堆栈比较: Left: 2012, Success; Right: 2016, Invalid Network Response
另一个有趣的事情是 Windows Server 2016 并没有真正为这个 dll 打开请求发送任何 SMB 数据包。
我担心这是 Windows Server 2016 内核的错误。
写完上面所有的话,问题就很清楚了:有谁知道到底发生了什么,有没有办法在Windows Server 2016 for IIS上加载远程dll?
【问题讨论】:
-
如果您怀疑这是一个错误,请证明它。由于您可以访问 Windows Server,因此请在重现问题时捕获 SMB 网络数据包并分析它们以获取支持您猜测的证据。否则,这只是您的猜测。
-
请看这个话题:stackoverflow.com/questions/54245000/…。应该是 Windows Server 2016 的问题。
标签: iis dll smb windows-server-2016 alibaba-cloud