无法在WCF ServiceModel客户端配置部分中找到元素

时间:2015-05-19 08:29:16

标签: c# wcf wcf-binding wcf-endpoint

ViewPager

我在IIS中托管了一个WCF服务,上面有示例服务合同。服务web.config文件设置如下。

完整的WCF Web.config文件

onCreate()

我正在尝试以编程方式访问该服务,如下所示。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //other initialization code
        getData();
        //remaining code
    }

    protected DataWrapper dataWrapper;

    private void getData(){
    try {
        //url for fetching data 
        String url = "http://....."
        new FetchAndPopulateMarketDataAsyncTask(this){
            @Override public void onPostExecute(DataWrapper result)
            {
                if(result==null){
                    //server or no internet error 
                }
                else{
                    dataWrapper = (DataWrapper)result;
                }
            }
        }.execute(new URL(url));
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

以上代码抛出错误

  

在ServiceModel客户端配置部分找不到名为“notSecureBinding”的端点元素并签署“ADSearcher.IService1”。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素

我似乎无法弄清楚我在这里做错了什么,或者有更好的替代方案以编程方式访问此服务?

2 个答案:

答案 0 :(得分:1)

在您的端点中,您指定的是Data.GetData类型的合同。合同的类型为IService1,默认情况下,合同名称应为服务接口的类型名称。

如果您确实希望将IService称为Data.GetData,则可以通过ServiceContractAttribute指定识别名称:

[ServiceContract(ConfigurationName = "Data.GetData")]
public interface IService1
{
   [OperationContract]
   DataTable GetADUserList(string strUserName, string strFirstName, string strLastName, string strEmail, string domain);
}

答案 1 :(得分:0)

  

找不到名为'customBinding'....的端点元素   ServiceModel客户端配置部分

这是因为您在配置文件中定义了两个客户端端点。他们被命名为:

  • notSecureBinding,
  • SecureBinding

因此错误消息是正确的,没有名称为“customBinding”的endpoint元素。

我认为你需要这样做:

IService1 ADUser = new ChannelFactory<IService1>("<either of the two bindings you defined>").CreateChannel();
  

我是否需要在ASP.NET MVC中配置与WCF相关的任何内容   应用程序的web.config文件?

好的,现在我明白了。您正在ASP.NET网站中托管WCF服务。你试图从我认为的其他地方调用它吗?

您肯定需要在web.config中定义<system.serviceModel />部分,该部分将告诉IIS如何托管您的服务。

目前,您在上面发布的配置定义了客户端端点。这些不是引用服务端点,而是客户端配置,旨在允许您调用服务。提示位于节节点的名称中:<client />。要定义您希望公开的服务端点,您需要将端点配置放在<service />部分中。在您的情况下,可能只需要将“客户”更改为“服务”以使其全部工作。

调用该服务的代码可能需要也可能不需要app.config文件中的客户端配置。你说你是以编程方式调用它(虽然没有看到你的完整客户端代码我不知道你做得足以满足WCF客户端调用堆栈),在这种情况下你不需要客户端配置。我希望这能让你更清楚。