【发布时间】:2015-05-28 14:54:10
【问题描述】:
我正在使用 Visual Studio 2013,我正在尝试使用来自 Nuance SDK 的程序集 DNSTools 创建一个 Web 服务。我的 WebMethod 非常简单:我只是从 DNSTools 的类中创建一个对象,然后返回“Hello World”。
using DNSTools;
namespace WebTestFinal
{
public class WebServiceTestFinal : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
DgnDictCustom dgn = new DgnDictCustom();
return "Hello World";
}
但是当我到达终点线时:
DgnDictCustom dgn = new DgnDictCustom();
它抛出了这个错误:
System.IO.FileLoadException: Retrieving the COM class factory for component with CLSID {A0E850E3-91DB-11D1-96DC-0080C72FD13C} failed due to the following error: 8007045a. A dll initialization routine failed. (Exception of HRESULT : 0x8007045A).
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at WebTestFinal.WebServiceTestFinal.HelloWorld()
我做了一些研究,发现System.IO.FileLoadException 被抛出是因为无法加载程序集。尽管使用了 Fuslogvw.exe 和 Process Monitor,但我找不到哪个程序集是问题的根源。
【问题讨论】:
-
DgnDictCustom 是一个出错的COM 对象。联系组件供应商
-
ASMX 是一项遗留技术,不应用于新开发。 WCF 或 ASP.NET Web API 应该用于 Web 服务客户端和服务器的所有新开发。一个提示:Microsoft 已停用 MSDN 上的 ASMX Forum。
标签: c# .net web-services asmx assemblies