我正在使用VersionOne SDK并不断收到有关OID无效的错误。但是,当我使用该OID在VersionOne中查找测试时,它是测试的正确OID。
A first chance exception of type 'VersionOne.SDK.APIClient.OidException' occurred in VersionOne.SDK.APIClient.dll
Invalid OID token: Test:32423
我传入一个字符串,其中包含“Test:32423”。
public void UpdateTestResults(string strTestId, string strActualResult)
{
var testId = Oid.FromToken(strTestId, _metaModel);
var query = new Query(testId);
var assetType = _metaModel.GetAssetType("Test");
var addResults = assetType.GetAttributeDefinition("ActualResults");
query.Selection.Add(addResults);
var result = _services.Retrieve(query);
var test = result.Assets[0];
var oldResult = GetValue(test.GetAttribute(addResults).Value);
var time = DateTime.Now;
const string format = "MMM ddd d HH:mm yyyy";
test.SetAttributeValue(addResults, "<p>" + "\n" + oldResult + time.ToString(format) + "-->" + strActualResult + "</p>");
_services.Save(test);
_logger.Log(Loglevel.Debug, test.Oid.Token, oldResult, GetValue(test.GetAttribute(addResults).Value));
}
我注意到只有在连续运行一系列测试时才会出现错误。当我只运行一个测试时,错误永远不会发生。
这是我在类的顶部放置的代码,用于创建连接器和构造函数。
const string ApplicationUrl = "https://www12.v1host.com/VersionOneAccount/";
readonly NetworkCredential _credentials = new NetworkCredential("userName", "passWord");
readonly IMetaModel _metaModel = new MetaModel(new VersionOneAPIConnector(ApplicationUrl + "meta.v1/"));
readonly IServices _services;
public V1Tools(ref DataObject masterData)
{
_services = new Services(_metaModel, new VersionOneAPIConnector(ApplicationUrl + "rest-1.v1/", _credentials));
_logger = masterData.Logger;
}
答案 0 :(得分:0)
当我查看内部异常时,我看到请求超时导致Invalid OID
异常被抛出。因此,如果OID正确并且您看到抛出此错误,请检查是否有其他Web请求干扰了应用程序与VersionOne服务器之间的通信。