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.

clip_image002

clip_image004

clip_image006

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