Ошибка WCF - не Могла найти элемент конечной точки по умолчанию, что ссылки сокращают 'UserService. UserService'

Я попробовал это, также с использованием linq. Просто замените строку своей формой. но строка облегчает понимание алгоритма. Пожалуйста, проверьте комментарии в коде для различных шагов:

         var lists = new List<List<string>>();
        lists.Add(new List<string> { "a", "b", "c" });
        lists.Add(new List<string> { "a", "c" });
        lists.Add(new List<string> { "d", "e" });
        lists.Add(new List<string> { "e", "d" });
        lists.Add(new List<string> { "e", "a" }); // from my comment

        var results = new List<List<string>>();

        foreach (var list in lists)
        {
            // That checks, if for this list, there is already a list, that contains all the items needed.
            if (results.Any(r => r.Count == r.Union(list).Count()))
            {
                continue;
            }

            // get the lists, that contains at least one item of the current "list".
            // This is important, as depending on the amount of elements, there have to be specific further steps.
            var listsWithItemsOfList = results.Where(r => list.Any(x => r.Contains(x)));

            // if not item, then you just have to add the whole content, as non of the colors exist.
            if (!listsWithItemsOfList.Any())
            {
                results.Add(new List<string>(list));
            }
            // if exactly, one, that add all the items, that were missing
            // (it might be, that nothing is added in case list.Except(l) is empty.
            else if(listsWithItemsOfList.Count() == 1)
            {
                var listWithOneItem = listsWithItemsOfList.Single();
                listWithOneItem.AddRange(list.Except(listWithOneItem));
            }
            else
            {
                // if multiple elements, it's getting complicated.
                // It means, that all needed items are currently spreaded over multiple lists, that have now to be merged.
                var newMergedList = listsWithItemsOfList.SelectMany(x => x).Distinct().ToList(); // merge all into one
                results.RemoveAll(x => listsWithItemsOfList.Contains(x)); // remove those lists from results
                results.Add(newMergedList); // just add one new list, containing all.
            }
        }
96
задан Chris Schiffhauer 12 February 2014 в 20:09
поделиться

6 ответов

У меня была такая же проблема. Мое приложение также было приложением Silverlight, и служба вызывалась из библиотеки классов с настраиваемым UserControl, который использовался в ней.

Решение простое. Скопируйте определения конечных точек из файла конфигурации (например, ServiceReferences.ClientConfig) библиотеки классов в файл конфигурации приложения silverlight. Я знаю, что вы ожидаете, что это сработает и без этого, но, видимо, у кого-то в Редмонде в тот день был отпуск.

185
ответ дан 24 November 2019 в 05:33
поделиться

Не уверенный, если это - проблема. Конечная точка и связывающий обоих имеет то же имя

1
ответ дан david valentine 24 November 2019 в 05:33
поделиться

У Вас есть Интерфейс, который реализует Ваш класс "UserService".

Ваши конечные точки должны указать интерфейс для атрибута контракта:

contract="UserService.IUserService"
2
ответ дан Nick Josevski 24 November 2019 в 05:33
поделиться

Не уверенный, если это - действительно проблема, но я вижу, что у Вас есть то же название Вашей обязательной конфигурации ().

Я обычно пытаюсь назвать свои конечные точки чем-то как "UserServiceBasicHttp", или что-то подобное ("Привязка" действительно не имеет ничего, чтобы сделать здесь), и я пытаюсь назвать свои обязательные конфигурации чем-то с ".... Конфигурация", например, "UserServiceDefaultBinding", для предотвращения любых потенциальных столкновений имени.

Marc

1
ответ дан marc_s 24 November 2019 в 05:33
поделиться

Измените web.config службы WCF на "endpoint address =" "binding =" basicHttpBinding "..." (ранее binding = "wsHttpBinding") После сборки приложения в "ServiceReferences .ClientConfig "" "конфигурация> имеет значение. Тогда все будет нормально.

4
ответ дан 24 November 2019 в 05:33
поделиться

На всякий случай, если кто-то столкнется с той же проблемой при использовании WPF (а не WCF или Silverlight):

У меня была эта ошибка при подключении к веб-службе. Когда мой код находился в «основном» решении для приложения WPF, никаких проблем, он работал отлично. Но когда я переместил код на более разумное решение на уровне DAL, возникло исключение.

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

Как было сказано «Sprite» в этой ветке, вам необходимо вручную скопировать тег.

Для приложений WPF это означает копирование тега из app.config в моем решении DAL в app.config в основном решении для приложений WPF.

12
ответ дан 24 November 2019 в 05:33
поделиться
Другие вопросы по тегам:

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