2015-09-29 3 views
1

У меня есть служба данных WCF, размещенная в консольном приложении. Он работает без жалоб, и когда для обеспечения безопасности установлено значение «Нет», это работает как шарм. Теперь, когда я включаю транспортную безопасность, он все еще работает, но когда я нахожу URL-адрес в веб-браузере, он не находит его. Я использую самоподписанный сертификат, чтобы проверить его.Консоль размещала службу данных WCF с запущенной системой безопасности, но не найдена клиентами

Буду признателен за любую помощь и совет.

Заранее спасибо.

Вот моя app.config:

<configuration> 
    <system.web> 
    <compilation debug="true" /> 
    </system.web> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </modules> 
    <handlers> 
     <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd"/> 
    </handlers> 
    </system.webServer> 

    <system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding name="TransportSecurity" > 
      <security mode="Transport"> 
      <transport clientCredentialType="None"/> 
      </security> 
      <!--<security mode="None"/>--> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service name="ConsoleServiceHost.BooksDataService"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="https://localhost:8900" /> 
      </baseAddresses> 
     </host> 
     <endpoint address="BooksDataService" binding="webHttpBinding" bindingConfiguration="TransportSecurity" behaviorConfiguration="webHttpBehavior" contract="System.Data.Services.IRequestHandler"></endpoint> 
     <!--<endpoint address="mex" binding="mexHttpsBinding" name="mex" contract="IMetadataExchange" />--> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="SSLBehave"> 
      <serviceMetadata httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceCredentials> 
      <serviceCertificate findValue="a3 6f 22 85 86 09 f0 4b 12 3c ea 18 10 c7 14 63 32 f8 a0 6e" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /> 
      </serviceCredentials> 
      <useRequestHeadersForMetadataAddress> 
      <defaultPorts> 
       <add scheme="https" port="443"/> 
      </defaultPorts> 
      </useRequestHeadersForMetadataAddress> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="webHttpBehavior"> 
      <webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Wrapped"/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 
    ... 
</configuration> 

Вот мой код услуги:

public class BooksDataService : DataService<SampleDbEntities> 
{ 
    public static void InitializeService(DataServiceConfiguration config) 
    { 
     config.SetEntitySetAccessRule("*", EntitySetRights.All); 
     config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); 
     config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; 
    } 
} 

А вот код для его размещения:

static void Main() 
{ 
    var host = new DataServiceHost(typeof(BooksDataService), new Uri[0]); 

    host.Open(); 

    Console.WriteLine(host.BaseAddresses[0]); 
    Console.ReadKey(); 

    host.Close(); 
} 
+0

Что происходит _exactly_, когда вы посещаете URL-адрес службы в своем браузере? – CodeCaster

+0

Я попал в URL-адрес службы: https: // localhost: 8900/BooksDataService, затем в браузере отображается сообщение «Не найден веб-сайт». –

+0

Да, это недостаточно точно. Отключить «удобные для пользователя страницы ошибок» IE. Получаете ли вы ответ от IIS? Каков точный ответ? – CodeCaster

ответ

0

решаемая. Я не прикреплял сертификат к порту приложения. Я пропустил эту команду:

netsh http add sslcert ipport=0.0.0.0:8900 appid={cc57b9c6bbd7-468d-81be-779e6a74099e} certhash=a36f22858609f04b123cea1810c7146332f8a06e 

Благодаря этому сообщению ответил на Hasan Baidoon: WCF DataService over Https.

Thank you CodeCaster для вашего сотрудничества.

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

  • Нет связанных вопросов^_^