Клиент Named-Pipes не запускается - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть библиотека классов, которая должна создать соединение с существующим сервером именованных каналов. Я получаю ошибку:

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

Вот XML-файл из dll.config:

<system.serviceModel>
    <bindings>            
        <netNamedPipeBinding>
            <binding name="internal" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false"
                transferMode="Buffered" transactionProtocol="OleTransactions"
                hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
                maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="Transport">
                    <transport protectionLevel="EncryptAndSign" />
                </security>
            </binding>
        </netNamedPipeBinding>
    </bindings>
    <client>
        <endpoint address="net.pipe://localhost/SelectedStudent" binding="netNamedPipeBinding"
            bindingConfiguration="internal" contract="SelectedStudentReference.ISelectedStudent"
            name="internal">
            <identity>
                <userPrincipalName value="name@company.org" />
            </identity>
        </endpoint>            
    </client>
</system.serviceModel>

Вот код, который я использую для создания экземпляра клиента, а также где он выдает ошибку:

using AwardManager.SelectedStudentReference;

if (_client == null) _client = new SelectedStudentClient("internal");

Я знаю, что сервер работает, и в сообщении об ошибке упоминается только ошибка клиента. Есть ли проблемы с этим из библиотеки классов? Программа установки не скопировала .config с помощью dll, я сделал это вручную, поэтому я не уверен, что .dll обращает внимание на .config.

Это зарегистрированная COM-видимая dll, которая создается и вызывается другим процессом. Я не могу добавить этот system.serviceModel в .config для этого другого процесса.

Я мог бы построить клиент в коде, если бы это работало, и у меня было несколько примеров того, как это сделать.

Я также мог бы использовать некоторую помощь с userPrincipleName. Неправильно использовать мои учетные данные. Разве это не должно указывать учетные данные пользователя или некоторые общие учетные данные? Нужно ли его включать в конфигурацию клиента?

Спасибо

1 Ответ

0 голосов
/ 04 февраля 2012

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

...