将 WSHttpBinding 移至 BasicHttpBinding...
问题陈述:.Net core 不支持WSHttpBinding 。
当我的应用程序位于 .Net 4.6 中时,我使用 WSHttpBinding 通过以下代码创建与 WCF 的连接。
var binding = new WSHttpBinding(SecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
binding.Security.Message.EstablishSecurityContext = false;
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var cert = store.Certificates.Find(X509FindType.FindByThumbprint, "Thumprint", true)[0];
result = new MyClient(binding, address);
client = result as ClientBase<TInterface>;
client.ClientCredentials.ClientCertificate.Certificate = cert;
Run Code Online (Sandbox Code Playgroud)
现在我正在将我的应用程序迁移到.Net core,我发现不支持WSHttpBinding。我计划使用BasicHttpBinding并进行以下更改:
var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
Run Code Online (Sandbox Code Playgroud)
对于BasicHttpBinding,没有提供以下代码:
binding.Security.Message.EstablishSecurityContext = false;//This …Run Code Online (Sandbox Code Playgroud) 我有一个现有的 Azure 函数(版本 1 V1)。我想将它们迁移到版本 2 (V2)。Azure Function V1 (.NET 4.61 / WebAPI 2)。Azure Function V2 (ASP.NET Core / MVC 6)。
我创建了 AF-V2 并尝试从 AF-V2 调用(用 .NET 4.61 编写的类库 .dll):它构建成功。
[FunctionName("MyFunctionV2")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "MyFunctionV2")] HttpRequest req,
ILogger log)
{
MyDllClass.InitializeSomething(parameter1, parameter2);//exception encountered here.
//my codes
Run Code Online (Sandbox Code Playgroud)
当我调试代码时,它( MyDllClass.InitializeSomething(parameter1, parameter2); ) 遇到以下弹出窗口,说明源链接将从 Internet 下载。

我有几个相关的问题:
我的问题是这样的:
我有一个 Azure APIM,我创建了一个 API 并添加了后端重试策略,如下所示。
<backend>
<retry condition="@("{{Transient-ErrorCode}}".Contains(Convert.ToString(context.Response.StatusCode)))" count="3" interval="5" first-fast-retry="false">
<forward-request />
</retry>
</backend>
Run Code Online (Sandbox Code Playgroud)
服务器第一次返回成功(状态码:200),当它启动重试时遇到以下情况(我也在重试成功,为了测试重试工作正常。)。
forward-request (1.326 ms)
{
"messages": [
"Content length mismatch",
"Content length mismatch"
]
}
Run Code Online (Sandbox Code Playgroud)
请帮助你的想法/经验。