VB .NET UDP -fehler

luigied

Mitglied
Hi,

habe mal wieder ein kleines Problem.

Und zwar habe ich folgende Bibliothek erstellt:
Code:
Public Class UDPSender

    <Microsoft.SqlServer.Server.SqlProcedure()> _
    Public Shared Sub sendUDP(ByVal IP As Long, ByVal Port As Integer, ByVal Data As String)
        Dim SenderSo As UdpClient
        Dim EP As IPEndPoint
        SenderSo = New UdpClient(9845)
        EP = New IPEndPoint(IP, Port)
        Dim Bytes(1024) As Byte
        Bytes = Text.Encoding.ASCII.GetBytes(Data)
        SenderSo.Send(Bytes, Bytes.Length, EP)
    End Sub
End Class

Diese soll als CLR-Prozedur in SQL-Server eingebunden werden. Das klappt auch soweit.
Nur beim Ausführen erhalte ich vom SQLServer folgende Fehlermeldung:

A .NET Framework error occurred during execution of user-defined routine or aggregate "CallHome":
System.Security.SecurityException: Fehler bei der Anforderung des Berechtigungstyps "System.Net.SocketPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
System.Security.SecurityException:
bei System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
bei System.Security.CodeAccessPermission.Demand()
bei System.Net.Sockets.Socket.Bind(EndPoint localEP)
bei UDPSender.sendUDP(Int64 IP, Int32 Port, String Data)

Weiss jemand, was ich da falsch mache?

mfg LuigiEd
 
ok. hier die lösung:

statt
Code:
SenderSo = New UdpClient(9845)

einfach den parameterlosen Konstruktor nutzen:

Code:
SenderSo = New UdpClient()

Hintergrund ist, dass sich die Routine sonst an den angegebenen Port bindet und diesen bis zum Senden blockiert.

Hier schmeißt? ... schmeisst**** ... WIRFT :D SQL-Server (oder das .NET-Framework) die SocketPermissionException, weil der SQL-Server nicht die berechtigung dazu hat.

Wäre auch fatal, wenn das ginge. Würde die Prozedur vom DB-Server ein 2. Mal aufgerufen, während der 1. Aufruf noch nicht terminiert ist, würde es krachen, weil der 1. Aufruf den Port noch belegt.
 

Neue Beiträge

Zurück