Не удается найти конечную точку по умолчанию в проекте MVVM - PullRequest
0 голосов
/ 24 января 2020

У меня есть решение с проектом MVVM, который ссылается на проект веб-службы WCF, и проектом WPF, являющимся частью GUI.

Когда я добавляю в окне WPF XAML ссылку на MVVM Основной класс, у меня есть ошибка: не удается найти конечную точку dafault, которая ссылается на контракт "MarketService.IService1" в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что файл конфигурации не найден, или что конечная точка соответствует эта конечная точка не найдена в клиентском элементе.

Ошибка возникает в проекте MVVM при вызове веб-службы:

public class MainWindowMVVM
{
    private IList<Magasin> _Magasins = new ObservableCollection<Magasin>();
    public IList<Magasin> Magasins {
        set
        {
            _Magasins = value;
        }

        get
        {
            return _Magasins;
        }
    }

    public MainWindowMVVM()
    {

        //au démarrage, magasins est remplie grâce à un appel au service
        using (var market = new MarketService.Service1Client())    <---- here is the error
        {
            Supermarche retour = market.GetSupermarche();
            //copier retour.magasins dans magasins
            foreach (Magasin mg in retour.Magasins)
            {
                Magasins.Add(mg);


            }

        }

        //trvMarket.ItemsSource = Magasins;

    }
}

Вот как класс MVVM включен в окно WPF:

<Window x:Class="UserInterface.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:UserInterface"
    mc:Ignorable="d"
    Title="Market Client" Height="450" Width="800"
    xmlns:self="clr-namespace:Model;assembly=Model"
    xmlns:mvvmPart="clr-namespace:MVVM;assembly=MVVM"   <-- here I include the project

    >

<Window.Resources>
    <local:NotConverter x:Key="NotConverter" />
    <Style x:Key="TreeViewItemStyle_ExpandAll" TargetType="{x:Type TreeViewItem}">
        <Setter Property="IsExpanded" Value="True"/>
    </Style>

</Window.Resources>
<Window.DataContext>
    <mvvmPart:MainWindowMVVM/>  <--here I want to make a default access to the MVVM class
...

В последней стрелке Visual Studio показывает ту же ошибку, что и выше (относительно конечной точки по умолчанию).

Чтобы добавить веб-сервис в проект MVVM, я используйте мастер Visual Studio: wizard

Обратите внимание, что проект WPF не содержит ссылок на веб-сервис. недостаток: я не нашел это необходимым.

Вот файл конфигурации app.config в проекте MVVM:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost/market11/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="MarketService.IService1"
                name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>
</configuration>

Вы знаете, что идет не так?

1 Ответ

0 голосов
/ 24 января 2020

Вы должны добавить конфигурацию в файл App.config работающего exectable, то есть файла в проекте приложения WPF.

Файл App.config в ссылочном проекте библиотеки классов не используется.

Вы также можете создать привязку программно:

var binding = new System.ServiceModel.BasicHttpBinding();
var endpoint = new EndpointAddress("http://localhost/market11/Service1.svc");

var factory = new ChannelFactory<IService1>(binding, endpoint);

var channel = factory.CreateChannel();
var retour = channel.GetSupermarche();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...