У меня есть служба WCF, работающая внутри службы Windows.Существует мекс-конечная точка на http://localhost/...
. Я могу перейти к ней через браузер, но если я использую MetadataResolver.Resolve, вышеупомянутое исключение будет выдано (с внутренним исключением "Удаленный сервер возвратилerror: (404) Not Found. ").
Единственное отличие, которое я заметил, заключается в том, что браузер использует get и Visual Studio сообщение.
Что я могу сделать, чтобы запустить?
Здесь на стороне сервера:
protected override void OnStart(string[] args) {
_serviceHost = new ServiceHost(new TestService());
var binding = new WSHttpBinding();
_serviceHost.AddServiceEndpoint(typeof(ITestService),
binding,
"http://localhost:8081/WindowsServiceWcf/service");
_serviceHost.Open();
}
Здесь в конфигурации:
<system.serviceModel>
<services>
<service name="WindowsServiceWcf.TestService" behaviorConfiguration="MexGet" />
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MexGet">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost/WindowsServiceWcf/service/TestServiceMexAddress" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Здесь на стороне клиента:
private void SetUpService() {
var mexUri = new Uri("http://localhost/WindowsServiceWcf/service/TestServiceMexAddress");
var metaAddress = new EndpointAddress(mexUri);
try {
var endpoints = MetadataResolver.Resolve(typeof(TestService), metaAddress);
} catch (Exception) {
// above mentioned exception
}
}
Надеюсь, теперь стало понятнее!?