WCF и вложенные классы - PullRequest
       8

WCF и вложенные классы

2 голосов
/ 27 февраля 2012

Во-первых, я хочу сказать, что у меня есть полнофункциональная служба WCF, которая использует множество конечных точек и сервисных контрактов без каких-либо проблем.

Хорошо, вот мой сценарий. У меня есть класс, который вложен в другой класс.

[Serializable]
[DataContract]
public class Database { 
    [Serializable]
    [DataContract]
    public class MyTable { 


    }
}

На моей конечной точке я ссылаюсь на интерфейс, который учитывает использование этих классов. Мой интерфейс выглядит так:

[ServiceContract]
public interface IDatabase { 
    [OperationContract]
    void GetData(Database.MyTable MyTableData);
}

Моя конечная точка выглядит так:

<endpoint address="Database" binding="netTcpBinding" bindingConfiguration=""
name="Database" contract="MyNamespace.IDatabase" ></endpoint>

Теперь на клиенте я сталкиваюсь с ошибкой, утверждающей, что метаданные не могут найти ссылку. Я точно знаю, в чем проблема, и тот факт, что этот класс вложен в другой класс. Чтобы исправить эту проблему или действительно обойти ее, я сделал следующее для моего интерфейса.

[ServiceContract(Namespace="http://MyNamesapce"]
public interface IDatabase { 
    [OperationContract]
    void GetData(Database.MyTable MyTableData);
}

Это решает все проблемы, и клиент может отлично генерировать метаданные. Я знаю, что упускаю понимание очень важной части WCF здесь. Я более или менее ищу ответы на вопрос, почему указание пространства имен в этом сервисном контракте, который ссылается на вложенный класс, помогает решить мою проблему генерации метаданных, ответ должен быть очевидным, но я сейчас ослеплен.

РЕДАКТИРОВАТЬ 1

Кроме того, если бы я мог решить эту проблему в app.config, я бы с удовольствием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...