Azure DataFactory HttpRequestFailedWithClientError(404)问题求助
报错信息
ErrorCode=HttpRequestFailedWithClientError,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=HTTP请求客户端错误,状态码404 NotFound,请检查活动设置。如果配置的baseUrl包含路径,请确保以'/'结尾。请求URL:https://gyter.sharepoint.com/sites/czxzd/SecAB/_api/web/GetFileByServerRelativeUrl('/sites/casc/ytu/dasasda/BMCSL/htsdL.xlsx')/$value.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Net.WebException,Message=远程服务器返回错误:(404) Not Found.,Source=System,'
排查步骤
修正服务器相对路径与API站点的匹配关系
SharePoint REST API的GetFileByServerRelativeUrl参数仅支持当前API端点对应站点/子站点内的文件路径。当前请求的API站点是https://gyter.sharepoint.com/sites/czxzd/SecAB,但文件路径指向了另一站点集合/sites/casc/ytu/dasasda/...,跨站点直接调用必然返回404。
如需访问目标文件,需将API端点切换到文件所在站点,即把BaseUrl改为https://gyter.sharepoint.com/sites/casc/ytu/dasasda/_api/web/,同时将文件路径调整为站点内相对路径/BMCSL/htsdL.xlsx。严格检查BaseUrl格式
确保配置的BaseUrl以/结尾,比如正确格式应为https://gyter.sharepoint.com/sites/czxzd/SecAB/_api/web/,避免路径拼接时出现断连或错误拼接。确认文件存在性与权限
- 直接在浏览器打开文件URL
https://gyter.sharepoint.com/sites/casc/ytu/dasasda/BMCSL/htsdL.xlsx,验证文件是否真实存在; - 用Postman携带已验证的Bearer Token调用目标API,确认账号是否具备文件读取权限,排除权限导致的404。
- 直接在浏览器打开文件URL
检查URL编码正确性
确保GetFileByServerRelativeUrl中的路径已正确编码,特殊字符需转义为URL格式,比如将路径替换为%2Fsites%2Fcasc%2Fytu%2Fdasasda%2FBMCSL%2FhtsdL.xlsx再尝试调用。验证子站点API端点
如果文件位于子站点,需确认API端点指向对应子站点,比如子站点https://gyter.sharepoint.com/sites/czxzd/SecAB/subsite的API端点应为https://gyter.sharepoint.com/sites/czxzd/SecAB/subsite/_api/web/,不能使用父站点的API端点。
内容的提问来源于stack exchange,提问作者Gopi Arumugam

