Это беспокоило меня в течение нескольких дней, поэтому я просмотрел примеры, показанные в статье, на которую вы ссылались выше. Все работает правильно, за исключением второго примера клиентского прокси, с которым у вас проблемы. Как вы заметили, и другим авторам, создающим прокси-сервер таким образом, требуется имя конечной точки, связывающее его с клиентом (именно там определена конечная точка). Я до сих пор не уверен, почему он ведет себя так, как он, но я не нашел способа использовать этот пример без явной привязки прокси к конечной точке.
С другой стороны, первый пример, показывающий, как создать прокси, не требует явного связывания адреса или привязки конечной точки:
using System;
using System.ServiceModel;
namespace CoDeMagazine.ServiceArticle
{
public class ProductClient
: ClientBase<IProductBrowser>,
IProductBrowser
{
#region IProductBrowser Members
public ProductData GetProduct(
Guid productID)
{
return Channel.GetProduct(productID);
}
public ProductData[] GetAllProducts()
{
return Channel.GetAllProducts();
}
public ProductData[] FindProducts(
string productNameWildcard)
{
return Channel.FindProducts(
productNameWildcard);
}
#endregion
}
}
Кажется, это работает просто отлично. Так что, может быть, второй пример с прокси-сервером - просто плохой способ сделать что-то, или, может быть, мы упускаем что-то очевидное ...