【问题标题】:Calling ADODB COM object from ASP.NET 5从 ASP.NET 5 调用 ADODB COM 对象
【发布时间】: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


【解决方案1】:

根据这篇文章http://talk.remobjects.com/t/net-aspnet-5-uriformatexception-when-creating-connectionmanager/7589/2,似乎 Microsoft.Dnx.Host.Clr.dll 程序集没有 CodeBase 属性,这最终是从中检索 URI 路径的地方。我尝试使用 /r 开关将 Microsoft.Dnx.Host.Clr.dll 添加到 GAC,以强制创建 CodeBase:

C:\gacutil /f /i "C:\Program Files\DNX\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\Microsoft.Dnx.Host.Clr.dll" /r FILEPATH "C:\Program Files\DNX\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\Microsoft.Dnx.Host.Clr.dll" "我的应用程序"

而且它有效!

编辑:

我在 DNX 源代码中发现了问题的根本原因。我已经提交了一个拉取请求来解决这个问题:https://github.com/aspnet/dnx/pull/3338

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 2021-09-14
    • 2014-02-05
    • 2011-06-20
    • 1970-01-01
    • 2010-11-14
    • 2011-05-16
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多