PowerBI Desktop返回404获取OData API,但在Fiddler中运行良好

时间:2019-03-23 20:36:22

标签: asp.net odata powerbi powerbi-desktop

我有一个客户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,因此它们不应应用。

1 个答案:

答案 0 :(得分:2)

因此,事实证明我正在使用OData v3,并且服务器具有OData v4,现在它向后兼容,但是您必须在PowerBI发出的请求中将MaxDataServiceVersion =“ 3.0”添加到标头中。 PowerBI本身不允许我捕获数据并通过提琴手进行检查,但是Excel在相同的API上进行过。