This can be fixed with………. investigated this and turns out this is an IIS request filtering issue with urls containing “+” character. Basically you get a 404.11 error since the url is double encoded. The following KB article presents a workaround to set “allowDoubleEscaping” to true. Note that by default this is disabled and you need to set this explicitly.
After I enabled this I was able to download files from directories containing “+” character. Can you try this out and let me know if it resolves you issue. To resolve this problem, follow these steps.
Note After you follow these steps, the security level of the server that is running IIS may be reduced. Therefore, before you set the allowDoubleEscaping property to True, consider the risk that is involved.
- Click Start, type Notepad in the Start Search box, right-click Notepad in the Programs list, and then clickRun as administrator. If you are prompted for an administrator password or for a confirmation, type your password, or click Continue.
- On the File menu, click Open, type %windir%System32inetsrvconfigapplicationHost.config in the File name box, and then click Open.
- In the ApplicationHost.config file, locate the requestFiltering XML element.
- Change the value of the allowDoubleEscaping property to True. To do this, use code that resembles the following example code.
- On the File menu, click Save.
- Exit Notepad.
Important When you enable double escaped sequences, the security level of the server that is running IIS may be decreased.
The previous steps will directly edit the applicationHost.config file and configure this setting at the server level. You can also use the Appcmd command to configure this setting. To do this, follow these steps:
- Click Start, click Run, and then type cmd in the Open box.
- Type the following command, and then press ENTER:
C: CD %windir%system32inetsrv
- Run one of the following commands:
Appcmd set config "Default Web Site" /section:system.webServer/Security/requestFiltering -allowDoubleEscaping:True
Note This will configure this setting only for the “Default Web Site” by creating or editing the Web.config file in the root folder of the “Default Web Site.”
appcmd set config "Default Web Site" /section:system.webServer/Security/requestFiltering -allowDoubleEscaping:True /commit:appHost
Note This will configure this setting only for the “Default Web Site” in the applicationHost.config file by using a location tag.