【发布时间】:2021-04-09 08:39:23
【问题描述】:
我正在使用 VS2019 开发 Blazor 服务器应用程序。在本地运行(调试或发布)时,它正在运行并且工作正常。将其发布到 Azure App Services 后,我收到远程证书无效消息。目前我调用了一个控制器方法。
如果剃刀页面代码为:
protected override async Task OnParametersSetAsync()
{
await Task.Run(async () => await GetExperimentInfo());
}
protected async Task GetExperimentInfo()
{
if (string.IsNullOrEmpty(eid))
{
ExperimentName = "Experiment entity not provided";
return;
}
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(NavigationManager.BaseUri);
ExpInfo = await client.GetFromJsonAsync<ExperimentInfo>("api/experiment/" + eid);
if (ExpInfo == null)
{
ExperimentName = "Error: Experiment not found";
return;
}
ExperimentName = ExpInfo.Name;
}
“eid”被指定为调用剃须刀页面的参数。
在 Azure App Service 上的服务器应用中调用控制器 GET 方法时,直接返回正确的信息。 从 razor 页面调用相同的控制器 GET 方法返回无效远程证书的 AuthenticationException!
控制器中调用的方法是:
[Route("api/experiment/{eid}")]
[HttpGet]
public ExperimentInfo GetExperimentInfo(string eid)
{
var ExpInfo = GetSNExperimentData(eid);
return ExpInfo;
}
我在网上浏览了很多文章,但到目前为止没有找到正确的答案为什么以及如何解决这个问题。
任何人有任何想法或经验吗?谢谢
【问题讨论】:
-
正如错误所说,HttpClient 抱怨该 https 端点上的证书无效。您可以自己查看证书并验证证书是否已过期/是否有其他问题。
-
有时也可能发生证书有效但不受服务器信任的情况。 (即证书是自签名的,或者从您的服务器的角度来看,证书颁发者不是“受信任的”方。另一个解决方法记录在另一个 stackoverflow 问题中:stackoverflow.com/questions/777607/…
标签: c# azure blazor-server-side azure-webapps