2016-05-12 1 views
0

У меня есть самодостаточна служба WCF, которая выглядит следующим образом:самодостаточно службы WCF броски Сообщения об ошибке «405 Метод не допускается»

[ServiceContract]  
public interface IService { 
    [OperationContract]  
    [WebGet] 
    List<Data> GetData(); 
    //...and much more Methods 
} 

Моего App.config выглядит следующим образом:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="MetaInformation"> 
     <serviceMetadata httpGetEnabled="true" 
         httpGetUrl="http://localhost:8500/MetaInfo" 
         httpsGetBinding="" /> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
     </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
     <behavior name="EndpointBehavior"> 
     </behavior> 
    </endpointBehaviors> 
    </behaviors> 
    <services>  
    <service behaviorConfiguration="MetaInformation" name="Library.WcfService.ServiceModel"> 
     <endpoint address="http://localhost:8500/Service" 
       binding="basicHttpBinding" 
       bindingConfiguration="BasicHttpBindingSettings" 
       contract="Library.WcfService.IService" 
       bindingName="BasicHttpBindingSettings" 
       behaviorConfiguration="EndpointBehavior"/>       
    </service> 
    </services> 
    <bindings>  
    <basicHttpBinding> 
     <binding name="BasicHttpBindingSettings" 
       closeTimeout="00:50:00" 
       openTimeout="00:50:00" 
       sendTimeout="00:50:00" 
       maxBufferSize="524288" 
       transferMode="Streamed" 
       maxReceivedMessageSize="2147483647" 
       maxBufferPoolSize="2147483647" 
       messageEncoding="Text"> 
     <readerQuotas maxDepth="2147483647" 
         maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" 
         maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647" /> 
     </binding> 
    </basicHttpBinding> 
    </bindings> 
</system.serviceModel> 

<system.web> 
    <httpRuntime maxRequestLength="102400"/>  
</system.web> 

Когда я запускаю этот сервер и клиентские приложения на своем локальном компьютере, он работает нормально. Но когда я пытаюсь запустить приложение сервера на другой компьютер, я не могу добавить ссылку на службу на клиенте, потому что я получаю это:

405 Метод не допускается метаданных содержит ссылку, которая не может быть решена: "http://192.168.178.54:8500/MetaInfo ». Это было не , прослушивание http://192.168.178.54:8500/MetaInfo Оконечная точка присутствующего, кто может принять сообщение. Это часто вызвано неправильным адресом или действием SOAP

Я пробовал почти все, что нашел в Интернете, но ничего не работало. Переключение на IIS или использование другого протокола должно быть планом B, я хочу сохранить его самостоятельно с http.

Пожалуйста, помогите мне. Я в отчаянии с этой проблемой.

+0

Не могли бы вы рассказать нам, какая версия .NET установлена ​​на другом компьютере, и если вы скопировали все необходимые DLL (от пользователей в каждом классе), не профинансированные .NET, в папку WCF-bin другого компьютера? Возможно, что ether .NET не установлен (в требуемой мини-версии), или у вас что-то есть в вашем GAC (глобальном кэше сборки), который у другого компьютера нет. –

+0

Я использую .NET 4.0 на обеих машинах. Я просто скопировал все решение VS на другой компьютер для отладки. Когда я запускаю клиент на другом ПК, он тоже работает. Я получаю эту ошибку, только если попытаюсь использовать службу WCF через локальную сеть. –

ответ

0

Ваш рабочий контракт украшен атрибутом [WebGet], что означает, что вы пытаетесь предоставить свою услугу как REST. Но ваша служба использует basicHttpBinding в качестве средства построения канала связи, который не поддерживается, поскольку тип содержимого для этого привязки soap+xml. В этом случае вам необходимо использовать WebHttpBinding, что является единственной привязкой, которая поддерживает спокойную реализацию WCF Services и поддерживает как типы данных Xml, так и Json.

+0

Я изменил свой App.config на WebHttpBinding. Все еще получаю ошибку 405 :( –

+0

вы можете опубликовать обновленный конфиг? –

+0

Да, это в моем ответе. –

Смежные вопросы