1

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));

    }

エラーは、一連のテストを連続して実行している場合にのみ発生することに気付きました。テストを 1 つだけ実行すると、エラーは発生しません。

これは、コネクタとコンストラクタを作成するためにクラスの先頭に置いたコードです。

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;

    }
4

1 に答える 1

0

内部例外を見ると、リクエストがタイムアウトしていて、Invalid OID例外がスローされていることがわかりました。したがって、OID が正しく、このエラーがスローされた場合は、アプリケーションと VersionOne サーバー間の通信に干渉している別の Web 要求がないかどうかを確認してください。

于 2014-06-09T18:01:41.723 に答える