gpt4 book ai didi

c# - ASP.NET 5 添加 WCF 服务引用

转载 作者:IT王子 更新时间:2023-10-29 04:18:04 25 4
gpt4 key购买 nike

在 Visual Studio 2015 预览版(预发行版)中,如何为 WCF 服务添加服务引用?

最佳答案

目前,这是一个相当复杂的过程,因为工具似乎不支持生成 WCF 客户端代码或从配置文件自动映射的方式。此外,正如 dotnetstep 指出的那样,ASP.NET 团队尚未将 System.ServiceModel 移植到 5(或者为 WCF 客户端提供替代方案尚未)。尽管如此,我们可以使用基于代码的方法来创建客户端代理并使用 svcutil生成我们的服务引用类。

解决方案先决条件

对于此示例,我假设您在本地托管服务 http://localhost:5000/MapService.svc实现 IMapService 契约。此外,我们将调用将包含服务代理的项目 MapClient

您的 project.json 应该类似于:

{
"commands": {
"run": "run"
},
"frameworks": {
"dnx451": {
"dependencies": {
"Microsoft.AspNet.Mvc": "6.0.0-beta2"
},
"frameworkAssemblies": {
"System.ServiceModel": "4.0.0.0"
}
}
}
}

生成服务引用类

首先,让我们在MapClient 项目中创建一个文件夹Service References

接下来,打开 VS2015 开发人员命令提示符 并导航到您的 MapClient 项目目录:

cd "C:\Users\youraccount\Documents\Visual Studio 2015\Projects\MapClient\src\MapClient"

确保 MapService 正在运行并运行以下命令:

svcutil /language:cs /out:"Service References\MapServiceReference.cs" http://localhost:5000/MapService.svc

这应该会生成两个文件,output.configMapServiceReference.cs

创建基于代码的客户端代理

由于目前在 ASP.NET 5 中无法自动将端点和绑定(bind)配置从配置文件映射到您的 ClientBase,因此 output.config 对我们没有多大用处。您可以将其删除。

相反,让我们在代码中创建一个客户端代理:

using System.ServiceModel;

namespace TestWCFReference
{
public class Program
{
public void Main(string[] args)
{
var endpointUrl = "http://localhost:5000/MapService.svc";
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress endpoint = new EndpointAddress(endpointUrl);
ChannelFactory<IMapService> channelFactory = new ChannelFactory<IMapService>(binding, endpoint);
IMapService clientProxy = channelFactory.CreateChannel();

var map = clientProxy.GetMap();

channelFactory.Close();
}
}
}

现在您可以使用clientProxy 实例访问IMapService 中的任何Operation Contract。

作为旁注,创建一个存储绑定(bind)和端点配置的键值配置文件并使用 Microsoft.Framework.ConfigurationModel.Configuration 可能是更好的架构。对象来填充您的 ChannelFactory,这样您就可以将服务配置保留在代码之外,但希望这个示例能让您入门。

关于c# - ASP.NET 5 添加 WCF 服务引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com