Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从c#服务器端调用asmx:在客户端元素中可以找到与此契约匹配的端点元素_C#_Web Services_Visual Studio 2010_Soap - Fatal编程技术网

从c#服务器端调用asmx:在客户端元素中可以找到与此契约匹配的端点元素

从c#服务器端调用asmx:在客户端元素中可以找到与此契约匹配的端点元素,c#,web-services,visual-studio-2010,soap,C#,Web Services,Visual Studio 2010,Soap,我在srv1上写了一篇asmx webSerivce。 我在srv2上写了一个asp.net项目的bll项目(原文:asp.net)。 两者都托管在同一web域下 我想从asp.net的bll项目调用asmx(原文:asp.net(c#)代码隐藏) 1) 我添加了一个web引用,但找不到任何教程来指导如何真正调用引用的服务 我试过: private void GetTemplateComponentsData() { var service = new ServiceReference.

我在srv1上写了一篇asmx webSerivce。 我在srv2上写了一个asp.net项目的bll项目(原文:asp.net)。 两者都托管在同一web域下

我想从asp.net的bll项目调用asmx(原文:asp.net(c#)代码隐藏)

1) 我添加了一个web引用,但找不到任何教程来指导如何真正调用引用的服务

我试过:

private void GetTemplateComponentsData()
{
    var service = new ServiceReference.GetTemplateParamSoapClient();
    TemplateParamsKeyValue[] responsArray = service.GetTemplatesParamsPerId(id);

    foreach (var pair in responsArray)
    {
        TemplateComponentsData.Add(pair.Key, pair.Value);
    }
}
但在执行第一行时会出现以下错误: 在ServiceModel客户端配置部分中找不到引用约定“ServiceReference.GetTemplateParamSoap”的默认终结点元素。这可能是因为找不到应用程序的配置文件,或者在客户端元素中找不到与此约定匹配的端点元素。

我错过了什么

2) 我计划将asp.net项目和asmx一起从一个域迁移到另一个域。
有什么方法可以相对地引用此Web服务吗?

好的,让我试着重新表述一下您的场景,以确保我理解正确:

  • 您在某个域上托管了一个ASMX web服务
  • 您有一个ASP.NET应用程序托管在同一个或不同的域上(这并不重要),您希望使用WCF客户端(svcutil)从中使用此ASMX web服务
  • 第一步是通过指向ASMX服务的WSDL向ASP.NET应用程序添加服务引用:

    这将做两件事:

    • 它将向您的web应用程序添加ServiceReference

    • 它将修改web.config并包括客户端端点:

      <client>
        <endpoint address="http://ws.cdyne.com/NotifyWS/phonenotify.asmx"
          binding="basicHttpBinding" bindingConfiguration="PhoneNotifySoap"
          contract="ServiceReference1.PhoneNotifySoap" name="PhoneNotifySoap" />
        <endpoint address="http://ws.cdyne.com/NotifyWS/phonenotify.asmx"
          binding="customBinding" bindingConfiguration="PhoneNotifySoap12"
          contract="ServiceReference1.PhoneNotifySoap" name="PhoneNotifySoap12" />
      </client>
      

      现在,只需将我的代码片段替换为您实际的服务名称。

      my bad,我需要从bll项目(库项目)中调用此asmx,因此我需要手动将元素添加到web.config?@Elad Benda,是的,您确实需要使用此库的ASP.NET应用程序的web.config中的客户端端点。您也可以在BLL中以编程方式配置端点,但最好有一个配置部分,因为它可以让您更轻松地更改设置,如URL、绑定等。您的详细回答让我感到惊讶。非常感谢!我可以问一下你是在哪个网站上寄存你的图片的吗?@Elad Benda,我使用了答案区域中的添加图片按钮。图像自动托管在
      imgur.com
      上。使用高级-->添加Web参考(对于.net 2.0版asmx服务)有哪些优点/优点
      using (var client = new ServiceReference1.PhoneNotifySoapClient("PhoneNotifySoap"))
      {
          var result = client.GetVersion();
      }