Mener at jeg har en .Undo der hvor der skal være en - men det kan være at jeg tager fejl. Jeg vedhæfter lige min kode og håber at du kan se hvor det går galt. Den URL jeg forsøger kalde til sendes over via et paremeter og jeg benytter flg. sql.
KLAD TIL CLR med URL
====================
SELECT dbo.callurl('
http://xxx.yyy.zz')
GO
PROGRAM KODE
============
Partial Public Class UserDefinedFunctions
<Microsoft.SqlServer.Server.SqlFunction()> _
Public Shared Function CallUrl(ByVal sURL As String) As SqlString
'impersonate the calling user
Dim newContext As System.Security.Principal.WindowsImpersonationContext
newContext = SqlContext.WindowsIdentity.Impersonate()
Try
Dim url As String = sURL
Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
Dim stmrdr As StreamReader = New StreamReader(resp.GetResponseStream)
Dim html = stmrdr.ReadToEnd
stmrdr.Close()
resp.Close()
Return New SqlString(html)
Catch ex As Exception
'Kald til procedure der skriver i eventloggen
LogToEventLog(ex.Message)
Return New SqlString("Error")
Finally
newContext.Undo()
End Try
End Function
Public Shared Sub LogToEventLog(ByVal errorMessage As String)
Dim log As System.Diagnostics.EventLog = New System.Diagnostics.EventLog
log.Source = "My Application"
log.WriteEntry(errorMessage)
End Sub
End Class