Web服务中的"无法加载类型"转换为VB.NET

时间:2020-03-05 18:52:34  来源:igfitidea点击:

我用Cusing SharpDevelop(我刚刚得到并且很喜欢)编写了一个简单的Web服务。

客户端希望在VB中使用它,幸运的是,它具有"转换为VB.NET"功能。这很棒。翻译所有代码,并进行构建。 (我很长一段时间以来一直是"记事本"人,所以我似乎有点过时了。)

但是,当我尝试立即加载服务时,出现此错误。

Parser Error Message: Could not load type 'flightinfo.Soap' from assembly 'flightinfo'.

Source Error:

Line 1:  <%@ WebService Class="flightinfo.Soap,flightinfo" %>

我已经删除了垃圾箱并进行了重建,并且我搜索了google(和stackoverflow)。我已经在项目文件中搜索了C#的所有残余。

有任何想法吗?

解决方案

回答

<%@ WebService Class="flightinfo.Soap,flightinfo" %>

你的班级叫什么名字?

回答

该问题可能是由于VB.NET和Cprojects对项目程序集使用了不同的命名约定以及如何使用项目名称空间引起的。至少那是我会开始寻找的。

回答

在VB.NET中,名称空间声明是相对于项目的默认名称空间的。因此,如果项目的默认名称空间设置为X.Y,则X.Y.Z名称空间中的Namespace Z和End Endspace之间将保持一致。
在C中,无论项目的默认名称空间如何,都必须提供完整的名称空间名称。
因此,如果Cproject具有默认名称空间X.Y,则CS文件仍将包含namespace X.Y声明。转换为VB后,如果文件中的默认名称空间和名称空间声明都保持不变,则最终会得到X.Y.X.Y名称空间中的类。
因此,在情况下,Soap类现在位于flightinfo.flightinfo命名空间中。因此,存在三种可能的解决方案:

  • 将asmx文件更改为
  • 从项目中删除默认名称空间
  • 从vb文件中删除名称空间声明