我有一个客户OData提要,我想将其引入PowerBI。当直接调用API时,PowerBI使用承载令牌可以正常工作
即https://api.mywebsite.com/odata/customers
但是,我将所有流量都通过反向代理(在web.config中重写了基本的url)进行路由,因此所有请求实际上都通过该url发出:
https://mywebsite.com/api/v1/odata/customers
此反向代理URL在Fiddler中可以正常工作。当我的UI在浏览器中调用它时,它会重新路由到第一个URL,并且也可以正常工作。但是PowerBI每次都会返回404。
我启用了PowerBI跟踪日志,发现出现了2个错误
"https://mywebsite.com/api/v1/odata/customers"
ExceptionType: System.Net.WebExceptionPublicKeyToken=b77a5c561934e089\r\n
Message: Unable to connect to the remote server
StackTrace:\n at System.Net.HttpWebRequest.GetResponse()\r\n
at Microsoft.Mashup.Engine1.Library.Common.WrappingHttpWebRequest
Microsoft.Mashup.Engine1.Library.OData.ODataFallbackVersionHandler.
HandleVersionFallbackMessage:
No connection could be made because the target machine actively refused it
127.0.0.1:8888
System.Net.Sockets.Socket.DoConnect
我检查了我的反向代理和Web应用程序日志,在上面的错误中没有404暗示它是真正的404,但不确定127.0.0.1错误是什么意思?
我的反向代理URL没有防火墙限制,因为Fiddler可以很好地从我的本地计算机发出呼叫。只是PowerBI不喜欢它,但是PowerBI通过直接调用API可以很好地工作。我曾尝试清除PowerBI中所有的数据源权限以从头开始,但是无论如何我都在标头中使用了承载令牌auth,因此它们不应应用。
答案 0 :(得分:2)
因此,事实证明我正在使用OData v3,并且服务器具有OData v4,现在它向后兼容,但是您必须在PowerBI发出的请求中将MaxDataServiceVersion =“ 3.0”添加到标头中。 PowerBI本身不允许我捕获数据并通过提琴手进行检查,但是Excel在相同的API上进行过。