Прежде всего, есть много статей в сети, но большинство из них для WCF 3.5.Я использую некоторые функции WCF 4.0, что делает сценарий немного другим.
Ниже приведен мой контракт:
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate="x?v={value}")]
string GetData(int value);
}
Ниже приведен мой класс обслуживания:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
}
Ниже приведен мой web.config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
<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>
Я не использую svc-файл, поэтому в Global.asax я написал следующую строку кода, чтобы представить мой сервис по пути 'blah'
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("blah", new WebServiceHostFactory(), typeof(Service1)));
}
Теперь для включения базовой аутентификации, если я изменяю стандартную конечную точку в web.config следующим образом:
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint automaticFormatSelectionEnabled="true">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
Я получаю следующую ошибку:
Не удалосьнайти базовый адрес, который соответствует схеме https для конечной точки с привязкой WebHttpBinding.Схемы зарегистрированных базовых адресов: [http].
Что я должен сделать с этого момента, чтобы он заработал?И где я буду проверять имя пользователя / пароль, предоставляемые при каждом запросе?