2013-11-24 4 views
0

В моем решении VS я создал консольный проект, который я использую в качестве клиента, и пустой проект для службы WCF.WCF. Приложение использует app.config клиента, а не app.config службы WCF.

Затем я создал службу WCF (создал мой контракт и тип сервиса и вручную создал app.config) и добавил ссылку на проект службы WCF в проекте клиента.

Однако, когда я вызывал ServiceHost.Open() в клиенте, конечные точки не загружались. В конце концов я решил, что мне нужно было поместить всю конфигурационную информацию в app.config клиента, а не в app.config службы.

Я не уверен, что это нормально, или если я делаю что-то неправильно. Раньше, когда я использовал шаблон проекта WCF, это было не так.

+0

Конфигурация взята из файла конфигурации для HOST PROCESS, то есть если вы размещаете службу WCF на сайте ASP.NET, то конфигурация происходит из web.config. Здесь много людей путают: если у вас есть сборка классов, у которой есть какой-то конфиг, это не будет то, от чего будет загружаться .NET config. Поэтому найдите конфигурацию сервера в своем веб-приложении (если вы используете ASP-хостинг) и app.config для клиента консоли. Почему вы вызываете Host.Open() на клиенте? –

+0

Спасибо. Я не знал об этом. Я работаю через «Windows Communication Foundation Unleashed», и я еще не создал метаданные, поэтому я просто использовал ServiceHost, чтобы убедиться, что все правильно загружается. Сначала я хотел решить эту проблему. –

ответ

0

Да, это нормально. Каждое приложение .NET (клиент, служба, веб-сайт и т. Д.) Имеет собственный файл конфигурации. Если быть точным, есть иерархия из них, но нижняя часть этой иерархии уникальна для приложения.

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

Если вы используете встроенную инструментальную среду Visual Studio, чтобы сделать все для вас, она автоматически создаст и/или изменит конфигурационный файл для вашего клиента, когда вы добавите ссылку на проект в проект, скопировав с конечной точки метаданных, что WCF выставляет для этой цели. Кроме того, вы можете использовать инструменты редактора конфигурации WCF для редактирования своего клиентского приложения.

Также обратите внимание, что ничто фактически не гарантирует, что ваш клиент и сервер имеют совместимые настройки; например вы можете изменить максимальные размеры многих буферов/графиков/etc на одной стороне, а не на другую, и увидеть странное поведение. Вы должны убедиться, что оба конца работают с взаимоисключаемыми настройками.

+0

Спасибо за информацию. С вашим объяснением это имеет смысл. Раньше я использовал встроенную инструментальную среду Visual Studio. Я хотел получить более глубокое понимание того, как сконфигурированы конфиги, и вещи такого характера. Если бы я не сделал все это вручную, я бы не отказался от всего этого :). –

+0

Нет проблем. Не забудьте отметить наиболее полезный ответ как «принятый», чтобы сайт работал плавно :) –

Смежные вопросы