IIS Express与Service Fabric托管.NET Core应用的Azure调用流量差异及成因
场景描述
- 开发的.NET Core Web API集成了Table Storage、Blob、Azure Key Vault等多款Azure SDK组件。
- 不同托管模式下的流量观测差异:
- 开发阶段通过Visual Studio 2017将应用部署到IIS Express时,可通过Fiddler观测到大量发往对应Azure资源域名的HTTP TLS握手请求,典型捕获样本为:
A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below. Version: 3.3 (TLS/1.2) Random: 60 6C 73 5C 37 CD D8 F9 FC FA 9C A9 D2 BE F8 1D A7 09 39 7D 62 8D 9F FC D6 4F 02 75 78 95 53 39 "Time": 2/25/2019 9:47:36 AM SessionID: empty Extensions: server_name mystorage.table.core.windows.net supported_groups x25519 [0x1d], secp256r1 [0x17], secp384r1 [0x18] ec_point_formats uncompressed [0x0] signature_algs rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512, rsa_pkcs1_sha256, rsa_pkcs1_sha384, rsa_pkcs1_sha1, ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, ecdsa_sha1, dsa_sha1, rsa_pkcs1_sha512, ecdsa_secp521r1_sha512 SessionTicket empty extended_master_secret empty renegotiation_info 00 - 当应用托管到本地Service Fabric集群时,Fiddler无法观测到发往Table Storage、Blob、Azure Key Vault等Azure资源的内部握手类HTTP请求。
- 开发阶段通过Visual Studio 2017将应用部署到IIS Express时,可通过Fiddler观测到大量发往对应Azure资源域名的HTTP TLS握手请求,典型捕获样本为:
核心待解答疑问
- 为何本地Service Fabric集群托管场景下,应用发起的指向Azure存储、Key Vault等资源的握手请求无法被Fiddler观测,而IIS Express托管场景下可以正常观测?厘清这一差异是理解应用后续运行表现区别的基础。
- 基于观测差异对应的运行表现区别:
- IIS Express托管时,如果
appsettings.config中配置了无效的Table Storage、Blob、Azure Key Vault连接字符串,应用会因所有指向Azure资源的握手请求失败而整体崩溃。 - 本地Service Fabric集群加载相同配置、搭配无效连接字符串的同版本应用时,应用运行正常,至少未依赖上述Azure存储、Key Vault能力的功能可正常使用。
- IIS Express托管时,如果
- 若将应用部署到生产环境Azure Service Fabric集群后发生Azure存储账户服务中断,上述两种托管场景的不同表现中,哪一种才是生产环境的真实预期表现,可据此提前制定针对性的故障缓解方案。
内容的提问来源于stack exchange,提问作者ecma-402
相关产品推荐
相关产品推荐

