Asp.net mvc 在asp.net mvc 4中使用Wcf服务
我有一个用vb.net编写的WCF服务。我想在c#MVC4客户端应用程序中使用它。但是,当我通过右键单击引用添加此服务并添加服务引用时,我无法使用此服务。我如何才能做到这一点?您的服务代码包含合同和实施。但是,服务代码应仅在服务中使用,而不是在客户端程序中使用。您应该生成代理类以供客户端程序(如Asp.NET应用程序)使用 有两种典型方式: 1.运行该服务,然后创建对该服务实例的服务引用,这样VSIDE将在文件夹服务引用下生成代理类。 2.对包含协定的服务程序集使用svcutil.exe生成代理类,并构建客户端API程序集Asp.net mvc 在asp.net mvc 4中使用Wcf服务,asp.net-mvc,wcf,asp.net-mvc-4,Asp.net Mvc,Wcf,Asp.net Mvc 4,我有一个用vb.net编写的WCF服务。我想在c#MVC4客户端应用程序中使用它。但是,当我通过右键单击引用添加此服务并添加服务引用时,我无法使用此服务。我如何才能做到这一点?您的服务代码包含合同和实施。但是,服务代码应仅在服务中使用,而不是在客户端程序中使用。您应该生成代理类以供客户端程序(如Asp.NET应用程序)使用 有两种典型方式: 1.运行该服务,然后创建对该服务实例的服务引用,这样VSIDE将在文件夹服务引用下生成代理类。 2.对包含协定的服务程序集使用svcutil.exe生成代理
第二种是最整洁、最有效的方式。请在查看本文了解更多详细信息这是一个非常基本的问题,但一般来说,您可以在主web.Config文件中添加web服务引用和端点信息,但我怀疑您在调用WCF服务URL时遇到了问题,如果是这样,我发布了一个通用类/包装器的示例,用于在MVC应用程序中调用WCF web服务 将Web引用添加到Visual Studio 2012(或类似内容): 在解决方案资源管理器中的项目上单击鼠标右键 选择添加–>服务参考–>然后单击高级按钮…–> 然后单击“添加Web引用…”按钮–>然后在URL框中键入Web服务的地址。然后单击绿色箭头,VisualStudio将发现并显示您的Web服务。 您可能已经知道上面的内容,并且可能只需要一个通用的包装器类,它使在MVC中调用WCF Web服务变得容易。我发现使用泛型类效果很好。我不能因此而受到赞扬;在互联网上找到的,没有归属。有一个完整的示例,其中包含可下载的源代码,它调用了使用PowerBuilder 12.5.Net创建的WCF Web服务,但是在MVC中调用WCF Web服务的过程是相同的,无论它是在Visual Studio还是PowerBuilder中创建的 用于在ASP.NET MVC中调用WCF Web服务的通用包装类 当然,不要在我不完整的示例之后对错误处理进行建模
using System;
using System.ServiceModel;
namespace LinkDBMvc.Controllers
{
public class WebService<T>
{
public static void Use(Action<T> action)
{
ChannelFactory<T> factory = new ChannelFactory<T>("*");
T client = factory.CreateChannel();
bool success = false;
try
{
action(client);
((IClientChannel)client).Close();
factory.Close();
success = true;
}
catch (EndpointNotFoundException e)
{
LinkDBMvc.AppViewPage.apperror.LogError("WebService", e, "Check that the Web Service is running");
}
catch (CommunicationException e)
{
LinkDBMvc.AppViewPage.apperror.LogError("WebService", e, "Check that the Web Service is running");
}
catch (TimeoutException e)
{
LinkDBMvc.AppViewPage.apperror.LogError("WebService", e, "Check that the Web Service is running");
}
catch (Exception e)
{
LinkDBMvc.AppViewPage.apperror.LogError("WebService", e, "Check that the Web Service is running");
}
finally
{
if (!success)
{
// abort the channel
((IClientChannel)client).Abort();
factory.Abort();
}
}
}
}
}
使用系统;
使用System.ServiceModel;
命名空间LinkDBMvc.Controllers
{
公共类Web服务
{
公共静态无效使用(操作)
{
ChannelFactory工厂=新的ChannelFactory(“*”);
T client=factory.CreateChannel();
布尔成功=假;
尝试
{
行动(客户);
((IClientChannel)client.Close();
工厂关闭();
成功=真实;
}
捕获(EndpointNotFounde异常)
{
LinkDBMvc.AppViewPage.apperror.LogError(“WebService”,即“检查Web服务是否正在运行”);
}
捕获(通信异常e)
{
LinkDBMvc.AppViewPage.apperror.LogError(“WebService”,即“检查Web服务是否正在运行”);
}
捕获(超时异常e)
{
LinkDBMvc.AppViewPage.apperror.LogError(“WebService”,即“检查Web服务是否正在运行”);
}
捕获(例外e)
{
LinkDBMvc.AppViewPage.apperror.LogError(“WebService”,即“检查Web服务是否正在运行”);
}
最后
{
如果(!成功)
{
//中止频道
((IClientChannel)client.Abort();
factory.Abort();
}
}
}
}
}
定义“不能使用此”。您是否收到错误?例如:使用WcfSupplierService;当我在控制器上添加此引用时,我得到一个错误。我无法创建wcf客户端实例。什么错误?为什么不能创建客户端实例?找不到类型或命名空间名称“WcfSupplierService”(是否缺少using指令或程序集引用?)c:\users\burak.taskiran\documents\visual studio 2013\projects\firstmvcdemo\TedarikSimobile\controllers\accountcontroller.cs错误。但我添加了服务引用。