У меня есть служба данных 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();
}
Что происходит _exactly_, когда вы посещаете URL-адрес службы в своем браузере? – CodeCaster
Я попал в URL-адрес службы: https: // localhost: 8900/BooksDataService, затем в браузере отображается сообщение «Не найден веб-сайт». –
Да, это недостаточно точно. Отключить «удобные для пользователя страницы ошибок» IE. Получаете ли вы ответ от IIS? Каков точный ответ? – CodeCaster