【发布时间】:2014-10-14 13:34:15
【问题描述】:
我有一个 OData 服务。基本根 uri 是:http://example.com/odata/v1。 我通过另一个网站公开它:http://apigee.com/odata/v1。该站点将所有请求重定向到 example.com,并具有客户端验证机制。
我正在使用 OData .NET 客户端库来调用该服务。每个简单的请求都可以正常工作:
GET http://apigee.com/odata/v1/Activities(1)
GET http://apigee.com/odata/v1/AppPackages(1)
对应的.NET代码如下:
var container = new Container("http://apigee.com/odata/v1");
var activity = container.Activities.Where(p => p.id == "1").SingleOrDefault();
var apppackage = container.AppPackages.Where(p => p.id == "1").SingleOrDefault();
当我想在这两个实体之间添加链接时,我遇到了“未授权”问题。代码是:
container.AddLink(act, "AppPackages", package);
container.SaveChanges();
而生成的http请求是:
POST http://example.com/odata/v1/Activities(1)/$links/AppPackages
AddLink 直接调用“http://example.com/odata/v1”而不是“http://apigee.com/odata/v1”。它没有通过 apigee.com 上的客户端验证,因此 example.com 拒绝它。我猜原因是来自“odata.metadata”。当我这样做时
GET http://mysite.io/odata/v1/Activities(1)
返回的信息是:
{
"odata.metadata":"http://example.com/odata/v1/$metadata#Activities/@Element",
...
}
我想知道是否有办法让我在这里返回“http://apigee.com/odata/v1”。或任何可以解决此问题的方法。非常感谢。
【问题讨论】:
标签: .net asp.net-web-api metadata odata