2016-12-09 3 views
0

Я пытаюсь создать службу WCF, к которой можно получить доступ через HTTP и именованные каналы. После изменения конфигурации по умолчанию (я добавил netNamedPipeBinding и конечную точку), я больше не могу использовать службу WCF. Что-то должно быть не так с моим Web.config.WCF не может получить метаданные

Edit:

Я забыл опубликовать сообщение об ошибке я получаю:

Error: Cannot obtain Metadata from http://localhost/WebServices/CreateContent.svc

If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.

Web.config

<system.serviceModel> 
    <services> 
     <service name="Application.WebServices.CreateContent" behaviorConfiguration="behave"> 
     <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" 
      name="basicHttp" contract="Application.WebServices.ICreateContent" /> 
     <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="mexHttpBinding" 
      name="mexHttp" contract="IMetadataExchange" /> 
     <endpoint binding="netNamedPipeBinding" bindingConfiguration="netNamedPipeBinding" 
      name="netNamedPipe" contract="PTUmbraco.WebServices.ICreateContent" /> 
     <endpoint binding="mexNamedPipeBinding" bindingConfiguration="mexNamedPipeBinding" 
      name="mexNamedPipe" contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost/WebServices/CreateContent.svc" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="behave"> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="basicHttpBinding" maxBufferSize="10485760" maxReceivedMessageSize="10485760" /> 
     </basicHttpBinding> 
     <netNamedPipeBinding> 
     <binding name="netNamedPipeBinding" /> 
     </netNamedPipeBinding> 
     <mexHttpBinding> 
     <binding name="mexHttpBinding" /> 
     </mexHttpBinding> 
     <mexNamedPipeBinding> 
     <binding name="mexNamedPipeBinding" /> 
     </mexNamedPipeBinding> 
    </bindings> 
    </system.serviceModel> 
+0

Какую ошибку вы получаете? – Stormhashe

ответ

0

Я постараюсь ответить как лучше, как Я могу, так как вы не сообщили, какую ошибку вы получаете.

Вы проверили, работает ли ваш адаптер сетевого адаптера Net.Pipe?

enter image description here

Если ошибка вы получаете это «сообщение не может быть отправлены, потому что служба по адресу конечной точки недоступна для протокола адреса», их, возможно, придется использовать ServiceModel Регистрацию инструмент от Microsoft, выполнив эту команду в папке фреймворка:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> ServiceModelReg.exe -r

I У меня уже было несколько проблем с WCF, и, как и вы, подумали, что это проблема с конфигурацией, но ваш конфиг выглядит нормально, так что вы можете попробовать.

здесь больше информации об этом ServiceModel инструмент:

https://forums.asp.net/t/2039313.aspx?WCF+TCP+Binding+Hosted+in+IIS+7+endpoint+address+is+unavailable+for+the+protocol+of+the+address

+0

Благодарим за помощь. Ошибка, которую я получаю: 'Ошибка: невозможно получить метаданные из http: // localhost/WebServices/CreateContent.svc.' . До изменений, внесенных в конфигурацию (добавление конечных точек, предоставление поведения имени и добавление привязок для NamedPipe), я смог получить доступ к службе через HTTP (протестирован с помощью WcfTestClient и моего собственного клиента). После редактирования конфигурации я больше не могу получить к ней доступ. Вот почему я уверен, что допустил ошибку в файле конфигурации. –