roker002
Commander
- Registriert
- Dez. 2007
- Beiträge
- 2.103
Ich habe Folgenden Aufruf für MS SQL CLR geschrieben. Ich habe schon für die andere Sache viel Zeit verloren. Deswegen bin ich bei der Frage Faul und Erbitte eure Hilfe.
Es gibt zwei Szenarien.
1 - Man wartet auf den Request,
2 - Man wartet nicht, da es nicht notwendig ist.
Bei dem #2 ist halt die Frage, ob ich beim Aufruf "BeginGetResponse" auch die Ressource irgend wann mal freigeben muss. Wenn nicht, dann hat sich das Thema erledigt. Sonst muss ich mir genau ansehen wo ich die Ressourcen wieder freigeben muss.
Danke
Es gibt zwei Szenarien.
1 - Man wartet auf den Request,
2 - Man wartet nicht, da es nicht notwendig ist.
Bei dem #2 ist halt die Frage, ob ich beim Aufruf "BeginGetResponse" auch die Ressource irgend wann mal freigeben muss. Wenn nicht, dann hat sich das Thema erledigt. Sonst muss ich mir genau ansehen wo ich die Ressourcen wieder freigeben muss.
Danke
Code:
[Microsoft.SqlServer.Server.SqlProcedure(Name = "ext_web_request")]
public static SqlInt32 ClrWebRequest(SqlString uri, SqlString userAgent, SqlString method, out SqlString res, [SqlClrInit.Attributes.Clr(Result = "bit = 0")]SqlBoolean responseRequired)
{
SqlInt32 result = 1;
try
{
res = String.Empty;
System.Net.WebRequest request = System.Net.HttpWebRequest.Create(uri.Value);
if (userAgent.IsNull == false)
((System.Net.HttpWebRequest)request).UserAgent = userAgent.Value;
request.Method = (method.IsNull ? "GET" : method.Value);
if (responseRequired.IsNull || responseRequired.IsFalse)
{
request.BeginGetResponse(null, null) //<----------GENAU HIER
}
else
{
using (var response = new System.IO.StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8))
{
res = response.ReadToEnd();
}
}
}
catch (Exception e)
{
result = 0;
res = String.Concat(e.Message, Environment.NewLine, e.StackTrace);
}
return result;
}
Zuletzt bearbeitet: