2015-01-09 48 views
0

我试图通过C# APIClient使用VersionOne API,但是我的元模型只能得到包含405异常的Unknown AssetType错误。我究竟做错了什么?这里有一个代码片段:版本1未知资产类型

VersionOneAPIConnector conn = VersionOneClientFactory.CreateClient(Endpoint.Data); 
conn.WithVersionOneUsernameAndPassword("username", "password"); 
IMetaModel meta = new MetaModel(VersionOneClientFactory.CreateClient(Endpoint.Meta)); 
Services s = new Services(meta, conn); 

如果有帮助,这里的CreateClient方法:

public static VersionOneAPIConnector CreateClient(Endpoint e) 
{ 
    StringBuilder url = new StringBuilder("https://www#.v1host.com/MyCompany/"); 
    switch (e) 
    { 
     case Endpoint.Data: url.Append("rest-1.v1"); break; 
     case Endpoint.Localization: url.Append("loc-2.v1"); break; 
     case Endpoint.Meta: url.Append("meta.v1"); break; 
     case Endpoint.Query: url.Append("query.v1"); break; 
    } 
    return new VersionOneAPIConnector(
     url.ToString(), 
     proxyProvider: new ProxyProvider(
      new Uri("http://proxy.server"), 
      "proxy_username", 
      "proxy_password" 
    )); 
} 

这里就是我在Visual Studio中看到:

Debugging in Visual Studio

在这种情况下,我使用一个断点向您展示本地窗口中的问题。如果我真的想做任何事情,MetaException就会被抛出。

+0

可能会有助于向我们展示出现错误的位置。 – Hogan 2015-01-12 19:39:25

回答

1

这似乎解决它:

proxyProvider: new ProxyProvider(
    new Uri("https://proxy.server:port"), 
    "proxy_username", 
    "proxy_password" 
) 

我敢发誓不管例如我用说成不包括端口。显然这是错误的。对不起,麻烦家伙,但谢谢你试图帮助!


另外,验证 mkunzi's answer也是有效的。您需要在端点末尾使用斜杠(例如 "meta.v1/"),否则它将无法工作。

1

我试过你的代码并遇到同样的问题。我能够通过在每个端点(特别是元端点)的末尾添加“/”来使其工作。你可以试试吗?

+0

我已经尝试过(并且要彻底地再次尝试一次),但我仍然得到了MetaException。 – ricksmt 2015-01-12 21:11:47

+0

只是想知道:当你试图解决这个问题时,你有没有代理?我想知道这是否会间接导致我的问题。 – ricksmt 2015-01-13 15:47:36

+0

我没有使用代理服务器,因为它没有在第一次使用时失败。目前正在研究这个问题。由于该错误发生在元终端无法正确解析的情况下,代理出现问题是可能的。 – mkunzi 2015-01-13 18:42:45