我写了一个简单的程序,因为我的应用程序不能在单声道工作。但即使这个简单的程序不起作用,我理解的是ServiceHost构造函数不会初始化其成员(尽管在单源代码中您可以看到正确的说明)。我使用的是单声道/ .net 4.0('mono --version'说的是4.0.1,monodevelop 5.10,ubuntu 14.04.2的lts(32bit)。我试图添加dll所需的版本(版本4.0) exe文件路径,但没有改变servicehost构造函数不初始化其成员在linux(mono - vb.net)
这是容易的代码,我使用。(在.net中没有错误,在linux “在System.ServiceModel.ServiceHostBase无效的IL代码:get_Credentials():IL_0000 RET”)。
Imports System.Security.Cryptography.X509Certificates
Imports System.servicemodel
Public Interface IMyService
Sub DoSomething()
End Interface
Public Class CMyService
Implements IMyService
Public Sub DoSomething() Implements IMyService.DoSomething
Console.WriteLine("-dosomething-")
End Sub
End Class
Module Module1
Sub Main()
Dim h As New ServiceHost(GetType(CMyService), New System.Uri("net.tcp://127.0.0.1/10000"))
'if you check 'h', you'll see all its member set to Nothing :(
h.Credentials.ClientCertificate.Authentication.CertificateValidationMode = Security.X509CertificateValidationMode.None
End Sub
End Module
编译成功,但执行时抛出异常 正如在源代码中报告的那样,如果你检查变量'h'的成员,我将它的所有项目设置为'Nothing'
我试过在Windows 7上使用Xamarin Studio和Visual Studio编译的32位和64位exe文件(它们在Windows上工作很好,但是在单声道中出现同样的错误)。我在ubuntu中使用了从Windows .net 4.0复制的dll。很明显,64位版本甚至没有启动。我甚至编译内部使用monodevelop 5.10的Linux,但我得到相同的运行时错误。
我改变了“Mono.Security.Criptography.X509Certificates”中的“System.Security.Criptography.X509Certificates”,也改变了dll,但是在linux中,我总是有相同的错误。
我可以做什么/检查?
我被困2天:/
在此先感谢您。
更新1
我转换在C#的源代码,以MCS编译,这表明也使用System.IdentityModel.dll。 C#中的应用程序以这种方式工作。然后我更新monodevelop中的项目,编译并在IDE中分步执行。
然后我更新了vb.net项目,添加了“缺少”dll。它在monodevelop下正确编译,并且由于相同的原因再次停止分步调试。
然后我编译使用vbnc和它的作品。但是我无法在IDE内进行调试。 我不明白为什么......我希望我不能将我所有的源代码转换为C#来查看其他“缺少的dll”,并猜测monodevelop的奇怪行为......
也许我试着添加'missing'在Windows 7中的DLL,编译并看看linux说的。
更新2
Linux并不像在Windows 7中编译的程序,必须在Linux中使用VBNC通过命令行编译。