Показано, что, потратив на это часы, я решил проблему вскоре после публикации.
Похоже, что проблема связана с использованием WebScriptServiceHostFactory. Вместо этого я создал служебную запись с атрибутом kind, и теперь она работает.
Вот исправленная конфигурация
<system.serviceModel>
<diagnostics wmiProviderEnabled="true">
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="3000"/>
</diagnostics>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<!--Default settings for the webHttpBinding-->
<binding>
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
</bindings>
<protocolMapping>
</protocolMapping>
<services>
<service name="SkillsPrototype.ServiceModel.Linkage">
<endpoint
kind="webScriptEndpoint"
contract="SkillsPrototype.ServiceModel.ILinkage"/>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false">
<serviceActivations>
<clear/>
<add service="SkillsPrototype.ServiceModel.Linkage" relativeAddress="~/Services/Linkage.svc"/>
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>