PDA

View Full Version : مشکل در پیاده سازی یک چت ساده



yavari
دوشنبه 24 اردیبهشت 1386, 08:22 صبح
سلام

کسی تابحال به همچین موردی برخورده ؟؟؟
این ارور:

Type System.DelegateSerializationHolder andthe types derived from it (such as System.DelegateSerializationHolder) are not permitted to be deserialized at this security level .
این کد سمت سرور :


Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting
Imports System
Imports InBetween
Public Class Server
Public Shared Sub Main()
Dim server1 As Server
server1 = New Server()
End Sub
Public Sub New()
Dim chan As IChannel = New HttpChannel(7777)
ChannelServices.RegisterChannel(chan)
System.Runtime.Remoting.RemotingConfiguration.Regi sterWellKnownServiceType( _
Type.GetType("InBetween.Manager, InBetween"), _
"ChatApplication", WellKnownObjectMode.Singleton)
Dim Manager1 As New Manager()
Console.WriteLine("The Manager object's ID:" & Manager1.getHash())
System.Console.WriteLine("Hit ENTER to exit...")
System.Console.ReadLine()
End Sub
End Class

این کد سمت کلاینت :


Imports System.Runtime.Remoting.Channels.Http
Public Class Client
Inherits System.Windows.Forms.Form
Private theManager As InBetween.Manager
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
Dim chan As HttpChannel
chan = New HttpChannel("8888")
System.Runtime.Remoting.Channels.ChannelServices.R egisterChannel(chan)
theManager = CType(Activator.GetObject(GetType(InBetween.Manage r), "http://localhost:7777/ChatApplication"), InBetween.Manager)
Try
AddHandler Me.theManager.evtReceiveText, AddressOf Me.HandleReceivedMsg
Catch e1 As Exception
MessageBox.Show(e1.Message)
End Try
Me.Text = "Client on " & Windows.Forms.SystemInformation.ComputerName()
MessageBox.Show(Me.theManager.getHash())
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private components As System.ComponentModel.IContainer
Friend WithEvents txtReceivedMsgs As System.Windows.Forms.TextBox
Friend WithEvents btnSend As System.Windows.Forms.Button
Friend WithEvents txtMsgToSend As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.btnSend = New System.Windows.Forms.Button
Me.txtReceivedMsgs = New System.Windows.Forms.TextBox
Me.txtMsgToSend = New System.Windows.Forms.TextBox
Me.SuspendLayout()
'
'btnSend
'
Me.btnSend.Location = New System.Drawing.Point(280, 160)
Me.btnSend.Name = "btnSend"
Me.btnSend.Size = New System.Drawing.Size(75, 23)
Me.btnSend.TabIndex = 0
Me.btnSend.Text = "&Send"
'
'txtReceivedMsgs
'
Me.txtReceivedMsgs.Location = New System.Drawing.Point(0, 8)
Me.txtReceivedMsgs.Multiline = True
Me.txtReceivedMsgs.Name = "txtReceivedMsgs"
Me.txtReceivedMsgs.ReadOnly = True
Me.txtReceivedMsgs.Size = New System.Drawing.Size(360, 88)
Me.txtReceivedMsgs.TabIndex = 1
'
'txtMsgToSend
'
Me.txtMsgToSend.Location = New System.Drawing.Point(0, 104)
Me.txtMsgToSend.Multiline = True
Me.txtMsgToSend.Name = "txtMsgToSend"
Me.txtMsgToSend.Size = New System.Drawing.Size(360, 48)
Me.txtMsgToSend.TabIndex = 2
'
'Client
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(360, 189)
Me.Controls.Add(Me.txtMsgToSend)
Me.Controls.Add(Me.txtReceivedMsgs)
Me.Controls.Add(Me.btnSend)
Me.MaximizeBox = False
Me.Name = "Client"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScree n
Me.Text = "Client"
Me.ResumeLayout(False)
Me.PerformLayout()

End Sub

#End Region
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Me.theManager.SendText(Windows.Forms.SystemInforma tion.ComputerName, Me.txtMsgToSend.Text)
txtMsgToSend.Text = ""
End Sub
Sub HandleReceivedMsg(ByVal username As String, ByVal text As String)
Me.txtReceivedMsgs.AppendText(username & " : " & text & vbCrLf)
End Sub
Private Sub Client_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Try
RemoveHandler theManager.evtReceiveText, AddressOf Me.HandleReceivedMsg
Catch e1 As Exception
MessageBox.Show(e1.Message)
End Try
End Sub
End Class

اینم لایبرری :


Imports System
Public Delegate Sub ReceiveText(ByVal username As String, ByVal text As String)

Public Class Manager
Inherits MarshalByRefObject
Public Event evtReceiveText As ReceiveText
Public Overrides Function InitializeLifetimeService() As Object
Return Nothing
End Function
Public Function SendText(ByVal username As String, ByVal text As String)
RaiseEvent evtReceiveText(username, text)
End Function
Public Function getHash() As String
Return Me.GetType.GetHashCode().ToString
End Function
End Class


ممنون میشم دوستان راهنمائی کنن منو !

با تشکر

yavari
سه شنبه 25 اردیبهشت 1386, 11:02 صبح
سلام

فایل ضمیمه ، فایلیه که دقیقا این مشکل رو داره ! :ناراحت:

ممنون میشم دوستان تست کنن !

با تشکر

CodeMasterX
سه شنبه 25 اردیبهشت 1386, 23:33 عصر
به وبلاگ جدید BlackDal یه سری بزنید.

yavari
چهارشنبه 26 اردیبهشت 1386, 08:51 صبح
سلام


به وبلاگ جدید BlackDal یه سری بزنید.

آقای مصافی وبلاگ جدید زدن !!! میشه آدرس رو بذارید ...

در ضمن من از ریموتینگ استفاده می کنم !
ممنون میشم شمام برنامه رو تست کنید ببینید این ارور رو دارید یا نه !!!

ممنون از توجه تون:لبخندساده: