问题
I hit an issue on IIS and it bothers me for many days. After I searched all over the web, I still cannot find the right answer so it is time to post on StackOverflow to seek help.
I created a Windows Server 2016 VM on Alibaba Cloud and an SMB file share on Alibaba Cloud. Then I followed this instruction (https://github.com/AlibabaCloudDocs/nas/blob/master/intl.en-US/Best%20Practices/Use%20Windows%20IIS%20and%20NAS%20to%20provide%20Web%20and%20FTP%20services.md) to put my website on the file share and load it to IIS. The problem is this setting works on Windows Server 2012 R2 or lower versions, however, it shows dll load failure on Windows Server 2016. Error looks like this:
Dll load failure: 0x8007003a
I have tried a bunch of settings
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
and searched online but none of the tricks work. I have also tried to use Process Monitor to check the details of w3wp.exe and got this difference between 2012 and 2016:
Windows Server 2012's w3wp.exe gives CreateFile: Success
Windows Server 2016's w3wp.exe gives CreateFile: Invalid Network Response
Comparison between the stacks of 2012 (Left) and 2016 (Right): Left: 2012, Success; Right: 2016, Invalid Network Response
Another interesting thing is Windows Server 2016 doesn't really send out any SMB packet for this dll open request.
My concern is this is a bug of Windows Server 2016 Kernel.
After writing all the words above, the question is pretty clear: Does anyone know what really happened and is there a solution to load remote dll on Windows Server 2016 for IIS?
来源:https://stackoverflow.com/questions/54177459/windows-server-2016-iis-hosted-website-failed-to-load-dll-on-a-remote-file-share