我在.NET核心项目中添加WCF时遇到了问题。当我过去使用.NET时,我可以在web.config
中添加多个环境,这样我就可以在运行时加载正确的Web服务(Dev,Rec,Prod)。
net核心项目中的问题当我将WCF服务的引用添加为Connected Service时,它创建了一个包含WCF服务URL的文件ConnectedService. json。
{
"ProviderId": "Microsoft.VisualStudio.ConnectedService.Wcf",
"Version": "15.0.20406.879",
"GettingStartedDocument": {
"Uri": "https://go.microsoft.com/fwlink/?linkid=858517"
},
"ExtendedData": {
"Uri": "*****?singleWsdl",
"Namespace": "Transverse.TokenService",
"SelectedAccessLevelForGeneratedClass": "Public",
"GenerateMessageContract": false,
"ReuseTypesinReferencedAssemblies": true,
"ReuseTypesinAllReferencedAssemblies": true,
"CollectionTypeReference": {
"Item1": "System.Collections.Generic.List`1",
"Item2": "System.Collections.dll"
},
"DictionaryCollectionTypeReference": {
"Item1": "System.Collections.Generic.Dictionary`2",
"Item2": "System.Collections.dll"
},
"CheckedReferencedAssemblies": [],
"InstanceId": null,
"Name": "Transverse.TokenService",
"Metadata": {}
}
}
我的问题是如何根据使用的环境加载正确的服务。
注。
在我的项目中,我没有一个appsettings
也没有网络配置。它是一个。net核心类库,它是在ASP.NET核心应用程序作为中间件调用。
5条答案
按热度按时间6bc51xsx1#
我从this article了解到,这是微软的建议:
1.添加新类文件
1.添加与服务reference.cs相同的命名空间
1.添加部分类以扩展引用服务类(在Reference.cs中声明)
1.和部分方法来实现ConfigureEndpoint()(在Reference.cs中声明)
1.通过为终结点设置新值来实现
ConfigureEndpoint()
方法示例:
1.在这里,您可以从
appsettings.json
文件中获取值新建系统. URI(配置. GetValue("您的服务地址")
bq3bfh9z2#
对于那些对解决方案感兴趣的人,我在每个appsetings.{environment}.json中为我的服务添加了一个端点,并在Service类中基于环境变量ASPNETCORE_ENVIRONMENT注入了我的服务的新示例
也许不是最好的,但效果很好。
vhmi4jdf3#
我使用的是. Net Core 3.1,这是我调用WCF服务的方式。
首先,从appsettings.json获取端点远程地址
其次,使用CTOR WCF客户端类参数中的地址调用Web服务客户端
先谢了。
rsl1atfo4#
使用
ChannelFactory
来使用您的服务。WCF ChannelFactory vs generating proxyChannelFactory
允许您设置EndpointAddress
. How to: Use the ChannelFactory端点的URL可以从配置文件加载。在更高级的设置中,可以执行服务的目录查找以检索部署应用程序的环境的URL。https://en.wikipedia.org/wiki/Service_provider_interface
https://github.com/jolmari/netcore-wcf-service-proxy
在ASP.NET核心Web应用程序中使用代理实现使用多个WCF服务的示例。
bhmjp9jg5#
我只是走简单的路线。
步骤1:
按照MSFT指南中的以下步骤添加服务引用:
https://learn.microsoft.com/en-us/dotnet/core/additional-tools/wcf-web-service-reference-guide
第二步:
创建工厂以创建WCF服务客户端。您可以从主项目或任何您想要的地方传递
wcfUriBasedOnEnvironment
。第三步:
像这样使用它: