Inconsistent results with IIS 8.5/symlink: some servers work, others 500.19-cannot read config

0

Backstory

I have a load-balanced group of web servers, all VMs running Windows 2012 R2, same windows updates, etc. They all run the same group of ASP.NET-MVC web apps, which are massively mulitenanted. Each of our customers has large amounts of their own content, mostly PNG files on disk as well as order files (PDFs and such).

The file server that contains all the customer content is getting full.

We are transitioning to a new file server, but we have an intermediate disk space crunch. We need to reduce space used by the old file server during the transition. The idea I am pursuing now is to transfer one customer's directory to the new file server, and use a symbolic link created with mklink /d to point the folder on fs1 to its actual new location on fs2.

Example

  • \\FS1\files points to E:\Content on server FS1
  • \\FS2\files points to E:\Content on server FS2
  • The web servers all have a virtual directory /files that points to \\FS1\files
  • This mklink command is run:

    mklink /d E:\Content\customers\cust001 \\FS2\files\customers\cust001

  • Now:

    • a web request for http://mysite/files/customers/cust001/images/image1.png
    • is translated by the web server to \\FS1\files\customers\cust001\images\image1.png
    • which hits the symlink, telling it to go to \\FS2\files\customers\cust001\images\image1.png
    • and the image gets served.

The problem

This somewhat ridiculous thing is happening perfectly on some of the web servers in the cluster. On others in the cluster, it returns HTTP 500.19, with this additional text:

The requested page cannot be accessed because the related configuration data for the page is invalid.

Error Code 0x8007052e

Config Error Cannot read configuration file

Config File \?\UNC\fs1\content\web.config

Direct viewing of \\?\UNC\fs1\content\web.config works perfectly, from the commandline, on all the servers in the cluster, when logged in as the same domain user under which the app runs.

I've seen Symlink created with mklink not working with IIS7.5 -- Windows 7 It doesn't apply because that person was using a symlink to a mapped drive. I'm using a virtual directory to a share, and a symlink to another share within that share.

I have executed fsutil behavior set symlinkevaluation L2L:1 R2R:1 L2R:1 R2L:1 on every server, so the symlink should get followed even though it's remote-to-remote.

I know I could abandon the symlink idea and use a multitude of virtual directories instead, one virtdir for each customer, present on each and every web server. But that would be a great deal more effort, and this whole thing is a stopgap until we get the massive amounts of files (over 10 TB) moved from one file server to the other. Furthermore, some operations within the web app need to access the files, themselves, so an IIS virtual directory wouldn't suffice.

Ideas?

symlink
iis-8.5
asked on Stack Overflow Dec 14, 2017 by Ross Presser

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0