Azure Function调用WCF asmx服务的身份验证配置及配置空格语法问题
Azure Function 调用 WCF 服务安全配置及空格项目名配置规范
1. WCF 客户端安全验证配置
支持用户名密码和证书两种验证模式,以下为.NET Azure Function 环境下的配置方法:
1.1 简单用户名/密码 Basic Auth 配置
- 先根据服务端安全配置选择对应绑定安全模式:HTTP 环境下用
BasicHttpSecurityMode.TransportCredentialOnly,HTTPS 环境下用BasicHttpSecurityMode.Transport - 客户端配置代码示例:
// 初始化绑定 var binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; // 初始化通道工厂 var channelFactory = new ChannelFactory<你的WCF服务协定接口>(binding, new EndpointAddress("WCF服务访问地址")); // 赋值验证用的用户名密码 channelFactory.Credentials.UserName.UserName = "验证用户名"; channelFactory.Credentials.UserName.Password = "验证密码"; // 创建客户端并调用接口 var client = channelFactory.CreateChannel(); var response = client.目标方法(入参);
- 若服务端为消息级用户名验证,只需将绑定安全模式改为
BasicHttpSecurityMode.Message,同时设置binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName即可。
1.2 证书验证配置
- 提前将验证用证书上传到 Azure Function 证书存储,或打包到项目部署包中,配置代码示例:
var binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; var channelFactory = new ChannelFactory<你的WCF服务协定接口>(binding, new EndpointAddress("WCF服务访问地址")); // 加载证书,以下为从文件加载的示例,也可通过指纹从系统证书存储读取 var clientCert = new X509Certificate2("证书文件路径", "证书密码", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet); channelFactory.Credentials.ClientCertificate.Certificate = clientCert; // 创建客户端并调用接口 var client = channelFactory.CreateChannel(); var response = client.目标方法(入参);
- 若为消息级证书验证,修改安全模式为
BasicHttpSecurityMode.Message,同时设置binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate即可。
2. 带空格项目名的配置文件语法规范
配置文件中带空格的项目名不需要特殊转义,直接使用完整带空格的字符串作为键名即可,不同格式配置示例如下:
- JSON 配置(
local.settings.json/appsettings.json)示例:
{ "my app": { "WcfEndpoint": "https://你的服务地址.asmx", "AuthUsername": "admin" } }
读取时直接使用完整名称即可,C# 读取示例:Configuration["my app:WcfEndpoint"]
- XML 配置(
app.config/web.config)示例:
<appSettings> <add key="my app.WcfPassword" value="xxxxxx" /> </appSettings>
注意:如果是在命令行、环境变量中引用带空格的项目名,需要用英文双引号包裹整个名称,避免被系统识别为多个独立参数。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

