ISSUE
While trying to connect to external content types for a SharePoint site using SharePoint designer the following error is encountered - "The Business Data Connectivity Metadata Store is currently unavailable”
SYMPTOMS:
Getting the error "The Business Data Connectivity Metadata Store is currently unavailable" in SharePoint designer while trying to connect to the external content types.
Even after checking the first few basic steps (Checking BDC service is started, we are able to browse to the BDC service application and see the external content types here, Checking BDC permissions and even creating a new BDC) if you still get the same issue
In this scenario, it is best to capture a fiddler trace.
The fiddler trace (fiddler tool available at http://fiddler2.com/) would show a 404 for the BdcAdminService
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
75 404 HTTP <siteurl>/_vti_bin/BDCAdminService.svc 0 spdesign:10080 [#55]
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
76 404 HTTP <siteurl>/_vti_bin/BDCAdminService.svc /_vti_bin/BDCAdminService.svc 0 spdesign:10080 [#56]
RESOLUTION:
Collect “Failed Request tracing” logs (as Fiddler would only show us a 404 for the BDCAdmin service) and SharePoint ULS logs would not be very useful for the issue.
(Refer to http://technet.microsoft.com/en-us/library/cc731798(v=ws.10).aspx and http://www.iis.net/learn/application-frameworks/running-classic-asp-applications-on-iis-7-and-iis-8/using-failed-request-tracing-to-troubleshoot-classic-asp-errors to understand failed request tracing)
From the Failed Request tracing logs, You should see something like:
ModuleName | RequestFilteringModule |
Notification | 1 |
HttpStatus | 404 |
HttpReason | Not Found |
HttpSubStatus | 10 |
ErrorCode | 0 |
ConfigExceptionInfo | |
Notification | BEGIN_REQUEST |
ErrorCode | The operation completed successfully. (0x0) |
“Request filtering module” in IIS is giving a 404. 404.10 status code implies that the “Request header it too long” (Refer http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits )
Check the ApplicationHost.Config file at the following location on server C:\Windows\System32\inetsrv\config
look for the headerlimit section. The header limit was set to:
<headerLimits>
<add header="Range" sizeLimit="4294967295" />
<add header="Content-Type" sizeLimit="100" />
</headerLimits>
The header limit set here causes the issue.
Remove the headerlimit section from the ApplicationHost.config file and do an IISReset.
Works like a charm! :-)