【发布时间】:2012-01-22 10:37:59
【问题描述】:
请稍等,我要布局整个画面。 我有一个 WPF 应用程序 (.exe),当 COM 对象(VB6 宏)调用应用程序方法时,它需要打开并显示一个窗口。我已经使 .exe 解决方案 COM 中的一个托管代码项目可见,并且 VB6 宏成功地调用了该托管代码项目(COM 存根)上的一个方法。
我的 COM 存根接收方法调用并在 WPF exe 上运行 Process.Start 第一次传入命令行参数。我的应用程序按预期启动。我现在需要通过我的 COM 存根从 VB6 宏发送数据,并在连续调用时将数据发送到 WPF exe。我向我的 WPF exe 解决方案添加了一个 WCF 项目,以生成“netNamedPipeBinding”服务。我在 COM 存根中添加了一个 ServiceReference 来与 WPF exe 对话。我已经使用控制台应用程序单独测试了 WCF 服务并且它可以工作。我已经使用与我的测试用例相同的元数据地址构建了 COM 存根 ServiceReference,并且它正常构建了引用。
我的测试驱动程序调用 COM 存根方法并且 WPF 应用程序启动。我对 COM 存根的下一次调用尝试实例化服务客户端,但我得到了可怕的错误: “在 ServiceModel 客户端配置部分中找不到名称为 'internal' 和合同 'SelectedStudentReference.ISelectedStudent' 的端点元素。”
这是我的 WCF 服务项目部分 WPF exe 解决方案中我的 app.config 的内容。
<system.serviceModel>
<bindings />
<client />
<services>
<service name="AwardManager.Service.SelectedStudentService">
<host>
<baseAddresses>
<!--<add baseAddress = "http://localhost:8080/SelectedStudent" />-->
<add baseAddress="net.pipe://localhost/SelectedStudent" />
</baseAddresses>
</host>
<endpoint
name="internal"
address="net.pipe://localhost/"
binding="netNamedPipeBinding"
contract="AwardManager.Service.ISelectedStudent"
/>
<endpoint
address="mex/pipes"
binding="mexNamedPipeBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="False"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
我尝试将其复制到 WPF app.config 中,但没有成功。此服务与控制台应用程序测试驱动程序一起使用。由于这是我第一次使用 WCF,因此我不知道下一步的故障排除步骤。我查看了another Stackflow question,但不知道它是否适用于我的情况。有什么想法吗?
【问题讨论】: