2014-11-18 6 views
-1

Я развивающаяся службу TCP базы WCF и я получаю этот пресловутый WCF Exception при попытке запуска службы в принимающем приложении:Не удается запустить службу WCF TCP на основе

необработанного исключения типа «System .InvalidOperationException 'произошло в System.ServiceModel.dll

Дополнительная информация: Служба WcfServiceWas.MathService имеет нулевые конечные точки приложения (без инфраструктуры). Возможно, это связано с тем, что файл конфигурации не найден для вашего приложения или потому, что в файле конфигурации не найден ни один элемент службы, соответствующий имени службы, или потому, что в элементе службы не было определено никаких конечных точек.

Эта проблема была описана много раз раньше, и предлагаемое решение - назвать услугу точно так, как она определена в библиотеке классов, проблема в том, что это решение не работает для меня.

Что не так в этой конфигурации, которую служба хостинга отказывается запускать Сервис?

Service Interface (IMathService.cs):

namespace WcfServiceWas 
{ 
    [ServiceContract] 
    public interface IMathService 
    { 
     [OperationContract] 
     OperationResult Add(int x, int y); 

     [OperationContract] 
     int Subtract(int x, int y); 
    } 
} 

внедрение Service (MathService.cs):

namespace WcfServiceWas 
{ 
    public class MathService : IMathService 
    { 
     public OperationResult Add(int x, int y) 
     { 
      return new OperationResult { Result = new MyInteger { Value = x + y } }; 
     } 

     public int Subtract(int x, int y) 
     { 
      return x - y; 
     } 
    } 
} 

Svc файл (MathService.svc):

<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceWas.MathService" CodeBehind="MathService.cs" %> 

Web .Config:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    </system.web> 

    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="WcfServiceWas.MathServiceBehavior" > 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
     <services> 
     <service name="WcfServiceWas.MathService" behaviorConfiguration="WcfServiceWas.MathServiceBehavior" > 
      <endpoint contract="WcfServiceWas.IMathService" binding="netTcpBinding" address="" /> 
      <endpoint contract="IMetadataExchange" binding="mexTcpBinding" address="mex" /> 
      <host> 
       <baseAddresses> 
        <add baseAddress="net.tcp://localhost:999/MathServiceX/"/> 
       </baseAddresses> 
      </host> 
     </service> 
     </services> 
    </system.serviceModel> 
</configuration> 

служба хозяин:

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var myServiceHost = new ServiceHost(typeof(MathService))) 
     { 
      myServiceHost.Open(); 
     } 
    } 
} 

Update: app.config хостинг-приложения должен содержать конфигурацию ФОС, а также.

ответ

1

Вы должны определить свой привязок раздел под <system.serviceModel> добавьте ниже <bindings> конфигурации:

<bindings> 
    <netTcpBinding> 
    <binding name="netTcpBindingConfiguration" sendTimeout="00:01:00"> 
     <security mode="None" /> 
    </binding> 
    </netTcpBinding> 
</bindings> 

и редактировать линии <endpoint contract="WcfServiceWas.IMathService" добавить bindingconfiguration в нем следующим образом:

<endpoint contract="WcfServiceWas.IMathService" 
      binding="netTcpBinding" 
      bindingConfiguration="netTcpBindingConfiguration" 
      address="" /> 

Сохраните эти изменения конфигурации и перезапустите службу, теперь она будет работать нормально.

Update:

так оказалось, что для самостоятельного хостинга приложений, конфигурации WCF должны быть в пределах app.config самого хозяина, а часть не обязательно появляться в системе .ServiceModel, так как он будет принимать привязки по умолчанию, документация MSDN иллюстрирует это еще

http://msdn.microsoft.com/en-us/library/ee530014%28v=vs.110%29.aspx

+0

Спасибо за ваш ответ, я пытался настроить связыванием ранее (на самом деле у не должно иметь его в соответствии с документацией). И я попробовал ваше решение, к сожалению, ничего не сделал для меня. – BanditoBunny

+0

Посмотрите, я создал новую службу wcf, и сначала я получил вашу точную ошибку, затем переместил раздел конфигурации из web.config службы WCF в app.config хоста службы и это сработало. Попробуйте это и дайте мне знать. –

+0

Смена приложения app.config для хост-приложения - так что конфигурация была в порядке, она просто не учитывалась. Если вы меняете свой ответ на это, я соглашусь с ним. Благодарю. – BanditoBunny

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