4

我创建了一个应该连接到我托管的 WCF 端点项目的类库。客户端项目定义了应与服务交互的命令行开关。

但是,我不断收到以下错误:

     Could not find default endpoint element that references contract Service1.MyService in the
 ServiceModel client configuration section. This might be because no configuration file was found
 for your application, or because no endpoint element matching this contract could be found in the
 client element.

你知道问题可能是什么吗?

编辑 我拥有的是一个定义 cmdlet 的类库。我使用 .psd1 文件导入使用生成的 dll 文件的 Import-Module。

EDIT2 再一次,我没有引用我的库的项目。调用定义的命令行开关的是 powershell,这些 cmdlet 应该连接到 WCF 端点

谢谢

4

3 回答 3

10

有这个工作:这是一个干净的解决方案:

internal static class ServiceClass
{

    internal static Object GetWCFSvc(string siteUrl)
    {

        Uri serviceUri = new Uri(siteUrl);
        EndpointAddress endpointAddress = new EndpointAddress(serviceUri);

        //Create the binding here
        Binding binding = BindingFactory.CreateInstance();

        ServiceClient client = new ServiceClient(binding, endpointAddress);            
        return client;
    }


}

internal static class BindingFactory
{
    internal static Binding CreateInstance()
    {
        BasicHttpBinding binding = new BasicHttpBinding();
        binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
        binding.UseDefaultWebProxy = true;
        return binding;
    }

}
于 2012-08-08T18:11:01.053 回答
0

在启动项目中创建带有端点的配置文件

于 2012-07-19T21:34:22.723 回答
0

当您在 cmdlet 程序集中运行代码时,执行进程是 powershell.exe(在 %windir%\system32\WindowsPowershell\v1.0 或 %windir%\syswow64\WindowsPowershell\v1.0 中),因此任何 System. ServiceModel 配置需要在 powershell 配置文件 (powershell.exe.config) 中定义。

我猜这可能不是一个实用的选项,因此您可能需要手动配置服务客户端或通道工厂,而不是通过应用程序配置文件。

有关示例,请参见此处:http: //msdn.microsoft.com/en-us/library/ms734681.aspx

另一种选择可能是使用激活配置文件:http: //msdn.microsoft.com/en-us/library/ff361644.aspx

我不确定这对服务配置元素的效果如何。

于 2012-07-20T02:30:35.243 回答