从c#服务器端调用asmx:在客户端元素中可以找到与此契约匹配的端点元素
我在srv1上写了一篇asmx webSerivce。 我在srv2上写了一个asp.net项目的bll项目(原文:asp.net)。 两者都托管在同一web域下 我想从asp.net的bll项目调用asmx(原文:asp.net(c#)代码隐藏) 1) 我添加了一个web引用,但找不到任何教程来指导如何真正调用引用的服务 我试过:从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.
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服务吗?好的,让我试着重新表述一下您的场景,以确保我理解正确:
- 它将向您的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,我使用了答案区域中的添加图片按钮。图像自动托管在
上。使用高级-->添加Web参考(对于.net 2.0版asmx服务)有哪些优点/优点imgur.com
using (var client = new ServiceReference1.PhoneNotifySoapClient("PhoneNotifySoap")) { var result = client.GetVersion(); }