“1维数组Char”的值不能转换为x.ArrayOfChar

时间:2014-01-28 22:34:01

标签: vb.net

我在遗留服务中有一个WebMethod。此服务目前是.NET 3.5构建的应用程序(Visual Studio 2008):

<WebMethod(EnableSession:=True)> _
Public Function Login(ByVal username As String, ByVal password As Char()) As MyAppUser

然后从VB.NET MVC .NET 4.5客户端(Visual Studio 2012)中尝试访问Login。 (我已经更改了一些变量名称以不使用我们的内部命名 - 所以不要介意任何拼写错误 - 相同的代码在Visual Studio 2008中工作,见下文)。

Dim MyWebService as WebService.WebServiceClass = New WebService.WebServiceClass()
....
Dim encryptedPassword As String = EncryptString(password)
Dim rights As WebService.MyAppUser = MyWebService.Login(user, encryptedPassword.ToCharArray())

问题是Visual Studio 2012编译器遇到了encryptedPassword.ToCharArray()的问题 - 给出了

Error    1    Value of type '1-dimensional array of Char' cannot be converted to 'WebService.WebServiceClass.ArrayOfChar'.

在我的客户参考的Reference.vb中:

<System.Diagnostics.DebuggerStepThroughAttribute(),  _
 System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"),  _
 System.Runtime.Serialization.CollectionDataContractAttribute(Name:="ArrayOfChar", [Namespace]:="http://tempuri.org/", ItemName:="char"),  _
 System.SerializableAttribute()>  _
Public Class ArrayOfChar
    Inherits System.Collections.Generic.List(Of Char)
End Class

但是,如果我在Windows .NET 3.5 Web应用程序(Visual Studio 2008)中使用相同的代码,它会编译并正常工作。我想使用ASP.NET MVC让我的生活更轻松,但我似乎无法克服这个小障碍。

1 个答案:

答案 0 :(得分:1)

错误消息表明当encryptedPassword.ToCharArray()是预期类型时ArrayOfChar正在返回一个数组,但我不知道为什么它在.NET 3.5中有效。

无论如何,要让它发挥作用,请尝试更改此行:

Dim rights As WebService.MyAppUser = MyWebService.Login(user, encryptedPassword.ToCharArray())

这样的事情:

Dim MyArrayOfChar As New ArrayOfChar
MyArrayOfChar.AddRange(encryptedPassword.ToCharArray())
Dim rights As WebService.MyAppUser = MyWebService.Login(user, MyArrayOfChar)