Я пытаюсь получить файл svc, работающий под IIS. В моем проекте, когда я нажимаю F5, я получил работу svc. Значит, я знаю, что все в порядке, не так ли? За исключением IIS.
Я работаю над машиной Windows XP Pro, а в IIS я добавил виртуальный каталог.
Здесь мой код: IcarePlanActions (проект: A)
namespace WcfServiceLibrary
{
[ServiceContract]
public interface ICarePlanActions
{
[OperationContract]
List<string> GetAllClients();
}
}
Клиент: (проект: A)
namespace WcfServiceLibrary
{
public class Client : ICarePlanActions
{
public List<string> GetAllClients()
{
List<string> clients = new List<string>();
clients.Add("Hendrik de Jong");
clients.Add("Miep de Berg");
clients.Add("Jaap Jongeneel");
clients.Add("Joop Prakman");
clients.Add("Pieter Schaakman");
return clients;
}
}
}
Web.config(проект: B)
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="CarePlanService.Service1Behavior"
name="WcfServiceLibrary.Client">
<endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary.ICarePlanActions">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CarePlanService.Service1Behavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
CarePlan.svc
<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary.Client" %>
Когда я запускаю эту службу (которая находится в IIS) с помощью wfctestclient, я получаю эту ошибку
Ошибка: невозможно получить метаданные из http://localhost/CarePlanService/CarePlan.svcЕсли это сообщение Windows (R) Фундаментальное обслуживание, к которому вы имеете пожалуйста, проверьте, что у вас есть включенных метаданных на указанный адрес.
Что я делаю неправильно?
Решение
Я не получил сервис, работающий под IIS. Сначала я вручную создаю виртуальный каталог и указываю на directiry, где находится svc. Это не сработало. Я не знаю, почему.
Затем я перешел в Visual Studio и изменил настройку сервера (правая кнопка мыши на проекте, свойствах, вкладке Web, нажмите Use local IIS Web Server
и нажмите Create Virtual Directory
. Когда я это сделал, он работал в IIS с приведенным выше кодом.