WCF, Как включить метаданные?

Я пытаюсь получить свой svc файл, работающий под IIS. В моем проекте, когда я нажимаю F5 I, получил работу svc. Таким образом, я знаю, что все хорошо, правильно? За исключением IIS.

Я работаю над машиной Windows XP Pro, и в IIS я добавил виртуальный каталог.

Вот мой код: IcarePlanActions (проект: A)

namespace WcfServiceLibrary
{
    [ServiceContract]
    public interface ICarePlanActions
    {
        [OperationContract]
        List GetAllClients();
    }
}

Клиент: (проект: A)

namespace WcfServiceLibrary
{
    public class Client : ICarePlanActions
    {
        public List GetAllClients()
        {
            List clients = new List();
            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)

  
    
      
        
          
            
              
            
          
          
        
      
      
        
          
            
            
            
            
          
        
      
    
  

CarePlan.svc

<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary.Client" %>

Когда я выполняю этот сервис (который находится на IIS) с wfctestclient, я получаю эту ошибку

Ошибка: не Может получить Метаданные из http://localhost/CarePlanService/CarePlan.svc, Если это - сервис Windows (R) Communication Foundation, к которому у Вас есть доступ, проверьте включение публикации метаданных в указанном адресе.

Что я делаю неправильно?

РЕШЕНИЕ

Я не получил сервис, работающий под IIS. Сначала я вручную создаю виртуальный каталог и указал на directiry, где svc расположен. Это не работало. Я не знаю почему.

Тогда я перешел к Visual Studio и изменил настройку сервера (Правильная мышь на проекте, свойства, вкладка Web, нажимают Use local IIS Web Server и нажмите Create Virtual Directory. Когда я сделал это, это работало под IIS с кодом выше.

12
задан Martijn 19 January 2010 в 08:50
поделиться

4 ответа

РЕШЕНИЕ

У меня не получилось заставить службу работать под IIS. Сначала я вручную создал виртуальную директорию и указал на директорию, где находится svc. Это не помогло. Я не знаю почему.

Затем я зашел в Visual Studio и изменил настройки сервера (правой кнопкой мыши на проекте, свойства, вкладка Web, выберите Use local IIS Web Server и нажмите Create Virtual Directory. Когда я это сделал, все заработало под IIS с приведенным выше кодом.

5
ответ дан 2 December 2019 в 21:02
поделиться

Для Ruby, The DialSheet Gem превосходно читать модифицировать запись, ... Excelly файлы

https://github.com/zdavatz/spreadsheet

-121--3765907-

Сначала снимите атрибут [DataContratt] в клиенте.

Затем перекомпилируйте и убедитесь, что у вас есть WCFSERVICELIBRARY.DLL в каталоге / bin для вашего виртуального каталога.

Ваш конфиг должен использовать эту конечную точку для метадатеэксуалов:

<endpoint address="mex" 
    binding="mexHttpBinding" 
    contract="IMetadataExchange"/>
7
ответ дан 2 December 2019 в 21:02
поделиться

Вы ссылаетесь на контракт данных в качестве реализации службы. Это недействительно.

[DataContract]
public class Client : ICarePlanActions
{

<service behaviorConfiguration="CarePlanService.Service1Behavior"
      name="WcfServiceLibrary.Client">

Измените это, чтобы ссылаться на реализацию вашего сервиса! Как выглядит реализация вашего обслуживания?

Может быть, вы должны просто удалить атрибут DataContract из класса клиента. Также это не ваш «клиент», это реализация услуг.

2
ответ дан 2 December 2019 в 21:02
поделиться
  1. Запустите "\%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i

  2. Удалите виртуальную директорию и создайте ее снова.

0
ответ дан 2 December 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: