404 Error on TFS web access pages when OPTIONS verb is set to deny in IIS.
We had an interesting case in TFS2013: The 404 errors when accessing TFS web access.
Most of the pages seem to be working fine, with an exception of a few pages like Charts, Change set tab under Code and Build tab.
In the browser we got a stack for the error,
§ 404: error
§ TFS.WebApi.Exception: 404: error
§ at b.prototype._getFailedRequestError (https://server:8080/tfs/_static/tfs/12/_scripts/TFS/min/corejs?v=HEJc3m-TUp5gkngY8ia8ydgk0vb9xsyzR-zxRx_Wx7k1:4081:2557)
§ at Anonymous function (https://server:8080/tfs/_static/tfs/12/_scripts/TFS/min/corejs?v=HEJc3m-TUp5gkngY8ia8ydgk0vb9xsyzR-zxRx_Wx7k1:4081:2068)
All of the options seem to come up fine when using visual studio and only web access seem to be affected.
We checked the IIS logs and found the following in it,
2015-08-04 14:20:40 W3SVC2 <IP> OPTIONS /tfs/DefaultCollection/_apis/discussion - 8080 - <IP> HTTP/1.1 Mozilla/4.0 404 6 0 1581 846 31
The IIS error had a status code of 404.6.
A quick search showed 404.6 means verb denied – which means the verb OPTIONS is not being processed by the server.
On checking the IIS server we found the IIS Admin had a strict policy of verbs allowed.
We went to “Request Filtering” under the IIS website and found the default setting was set to deny any verb that’s not listed explicitly to be allowed.
Issue was resolved on allowing the verb “OPTIONS”. Options is a not so heavily used verb when compared to GET or PUT, so may not be allowed in locked down environments. TFS web access needs that verb and we would see issues like this if is denied.
So if you do run into a similar issue, do a quick check on the verbs allowed.
Content Created By : Venkata Narasimhan
Reviewer: Chandra Sekhar Viswanadha
Comments
Anonymous
November 01, 2015
Super good one , atleast u got 404 error, I didn't get it either, but it was blank , finally used developer tools to figure out thisAnonymous
September 27, 2016
Thanks so much for share this problem's solution, you save my life.