Autodesk Vault 2023 调用SDK实现登录功能

393 阅读2分钟

最近做二次开发需要用到Vault协作模块和Vault登录功能,虽然有Vault SDK的帮助文档,但是登录模块的帮助文档内容并没有随着Vault版本的变化而变化,所以开发过程异常艰难,寸步难行。不过幸好我国人才多,各方咨询才使得问题顺利解决。因为网上相关解决办法几乎没有,所以为了后人方便乘凉,我就总结一下大佬对我的帮助,在这栽棵树。

Vault登录代码有两种:

  1. 调用Vault SDK内置的登录界面登录:
using VDF = Autodesk.DataManagement.Client.Framework;
using Autodesk.DataManagement.Client.Framework.Vault.Currency.Connections;
Connection=VDF.Vault.Forms.Library.Login(new LoginSettings());
  1. 调用Vault登录代码传参登录:
using VDF = Autodesk.DataManagement.Client.Framework;
VDF.Vault.Results.LogInResult results = VDF.Vault.Library.ConnectionManager.LogIn("Vault服务器IP", "Vault服务名称", "账户名", "账户密码",AuthenticationFlags.Standard, null);

如果直接将代码写入项目,运行会报错:"Autodesk.Connectivity.WebServicesTools.WebServiceManager"的类型初始值设定项引发异常

image.png 根据报错内容,我们需要在项目中引用Autodesk.Connectivity.WebServices.dllAutodesk.Connectivity.WebServices.WCF.dll(如果不知道这些dll在哪儿,可以安装一个Everything全局搜索一下)。

引用完dll异常顺利解决,但是不要高兴太早,还有其他异常等着。

image.png

使用第一种Vault的登录方式,点击下方界面确定按钮:

image.png

报错:“无法获取许可证”,英文异常:“Autodesk.Connectivity.WebServices.VaultLicenseException”,解决这个异常需要将Vault安装路径下的AdskLicensingSDK_6.dll复制到项目的/bin/Debug下,这样就可以获取到许可证,且顺利登录了。

如果你在解决问题的过程中,参考了已解决:自定义 Web 服务中的登录问题 Vault 2017 - 欧特克社区 - 保管库 (autodesk.com)的解决方式,在项目的App.config中加入

<configSections>
    <section name="Licensing" type="Autodesk.Connectivity.WebServices.LicensingSection, Autodesk.Connectivity.WebServices"/>
  </configSections>
  <Licensing edition="None"/>

大概率解决不了问题(反正我这边没用),结合上述解决办法反而还会报错:“Autodesk.Connectivity.WebServices.VaultLicenseMismatchException”,许可证不匹配异常,解决方法就是把App.config中添加的内容删掉,即可顺利登录。

ceeb653ely8h1g17qbwkgg206o06ojzo.gif