Wie in
diesem Thread geschildert, habe ich mir eine .NET Funktion unter dem
SQL Server 2005 erstellt, die auf einen Webservice zugreift, dort was ausliest, und an den
SQL Server zurückgeben soll. Die Kommunikation klappt auch einwandfrei.
Jetzt will ich aber die Zugriffsrechte ein bischen einschränken. Hab dafür die web.config Datei angepasst, und auch im IIS angegeben, dass kein anonymer Zugriff auf die Seiten erlaubt ist, und stattedessen die Windows Authentifizierung geprüft werden soll.
Rufe ich jetzt über den Browser die Webservice Seite auf (von einem anderen Rechner heraus), kommt auch wunderbar die Loginbox. Logge ich mich richtig ein und rufe eine Webservice Funktion auf, so liefert die mir ein korrektes Ergebnis.
Rufe ich jetzt jedoch die
SQL Server Funktion auf, bekomm ich ne Fehlermeldung:
Msg 6522, Level 16, State 1, Line 1
A .NET Framework error occurred during execution of user defined routine or aggregate 'ReadString':
System.Net.WebException: The request failed with HTTP status 401: Access Denied.
System.Net.WebException:
at System.Web.Services.Protocols.SoapHttpClientProtoc ol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtoc ol.Invoke(String methodName, Object[] parameters)
at TOPCService.ReadString(String Itemname, String DeviceName)
at Functions.ReadString(String Itemname, String DeviceName)
.
Ich versteh das nicht? Warum geht der direkte Zugriff über einen Delphi Client, und aus dem
SQL Server heraus hakt es.
Unter welchem Benutzer werden eigentlich SQLCLR Funktionen ausgeführt? Der
Sql Server Prozess läuft bei mir unter dem Windows Account "Network Service", und der hat auch Rechte auf das ASP.NET Webservice Verzeichnis.