我有一个类库,它应该与现有的命名管道服务器建立连接。我得到的错误是:
无法在ServiceModel客户端配置部分中找到名称为“internal”且收起“SelectedStudentReference.ISelectedStudent”的端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。
这是来自dll.config的xml:
<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");
我知道服务器正在运行,错误消息只提到客户端故障。从类库中执行此操作是否有任何问题?安装程序没有使用dll复制.config,我手动完成,所以我不确定.dll是否正在关注.config。
这是一个已注册的COM-visible dll,它由另一个进程实例化并调用。我无法将此system.serviceModel添加到该其他进程的.config中。
我可以在代码中构建客户端,如果可行的话,我有一些如何实现的例子。
我还可以使用userPrincipleName的一些帮助。它使用我的凭据似乎不正确。它不应该指定用户的凭据或一些通用凭据吗?它甚至需要包含在客户端配置中吗?
由于
答案 0 :(得分:0)
这个东西需要在托管你的DLL的exe的配置中。 DLL没有独立的配置 - 或者除非你做一些自定义的事情,否则至少.NET不会读取它。
如果您无法修改托管EXE配置,则可能需要在代码中构建此配置。