【发布时间】:2016-01-28 07:08:06
【问题描述】:
是否可以从 ASP.NET 5/dnx.exe 调用 COM 对象?我引用了一个 .NET 4.5.1 对象,该对象本身尝试创建 ADODB 连接,但失败并显示以下内容:
System.URI.FormatException: {"无效的 URI:URI 为空。"}
调用栈:
System.dll!System.Uri.CreateThis(string uri, bool dontEscape, System.UriKind uriKind) Unknown
System.dll!System.Uri.Uri(string uriString) Unknown
System.dll!System.ComponentModel.Design.RuntimeLicenseContext.GetLocalPath(string fileName) Unknown
System.dll!System.ComponentModel.Design.RuntimeLicenseContext.GetSavedLicenseKey(System.Type type, System.Reflection.Assembly resourceAssembly) Unknown
System.dll!System.ComponentModel.LicenseManager.LicenseInteropHelper.GetCurrentContextInfo(ref int fDesignTime, ref System.IntPtr bstrKey, System.RuntimeTypeHandle rth) Unknown
【问题讨论】:
-
如果您有 COM 对象,那么您可能已经在程序集缓存
%SystemRoot%\assembly中拥有 .NET 程序集,或者您可以通过 Visual Studio 或tlbimp.exe生成生成互操作程序集。 GAC 中是否存在程序集?我发布了the answer,它描述了如何使用Word,例如来自 ASP.NET 5 应用程序。在我看来,这是您需要做的第一步。 -
@Oleg:我尝试将 GAC 中的 ADODB.dll 引用直接添加到 ASP.NET 控制台应用程序。参考添加得很好。但是在尝试创建新的 ADODB 连接时出现无效的 URI 错误。所以,我猜问题不在于 COM,它是 ADODB 特有的。
-
您写了关于使用 ADODB 连接的 COM 对象。直接使用 ADODB Connection 是没有意义的,因为可以使用 Entity Framework 来处理 SqlCommand、SqlReader 等。你到底需要什么?您能否描述一步一步的说明来重现您真正遇到的问题?
-
我们有大量使用 ADODB 的遗留代码,不能切换到实体框架。只需创建一个 .NET 4.5.1 类库,添加对 ADODB 的引用,添加尝试创建新 ADODB 连接的代码,创建一个 ASP.NET 5 控制台应用程序,添加对类库的引用,从类库。
标签: asp.net-core dnx