我在使用HTTPS访问ASP.NET OData端点时遇到问题。 ASP.NET站点通过OWIN托管。我正在使用NuGet包Microsoft.AspNet.WebApi.OData作为OData(v3)部分。 SSL终止发生在服务器外部的单独负载均衡器中。
使用REST客户端(例如Postman)访问OData端点可以正常工作:https://api.my-domain.com/odata/v3
但是当我使用OData客户端(例如Excel或PowerBI)时,访问失败并显示通用消息,主机强行关闭连接。
此外,我发现当我通过Postman访问端点https://api.my-domain.com/odata/v3时,我会收到一些XML元数据,这些元数据指的是正常的 http 端点(请参阅下面的代码段),它被阻止LB.
<?xml version="1.0" encoding="utf-8"?>
<service xml:base="http://api.my-domain.com/odata/v3" xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
<workspace>
...
此外,我使用Wireshark嗅探来自Excel / PowerBI的流量,发现客户端使用 https 。我不熟悉OData协议的详细信息,但我猜客户端正在通过元数据确定地址。
对于验证我在LB中取消阻止端口80,无论我是否使用 http 或 https 作为初始请求,Excel / PowerBI都可以成功连接。
但是如何解决这个问题(我不想允许 http 上的流量)。是否可以指示ASP.NET OData中间件使用 https URI生成元数据?