Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los datos se pueden eliminar de los servicios de datos de ADO.NET mediante una solicitud HTTP DELETE. La solicitud DELETE se puede aplicar a conjuntos de entidades mediante una clave, valores de propiedad, vínculos y propiedades de navegación.
Solicitud DELETE para quitar una entidad
A los datos requeridos por la solicitud DELETE se les aplica el formato de una cadena que se convierte en parte del cuerpo de la solicitud HTTP. Una solicitud DELETE primero identifica el conjunto de entidades y la clave de entidad. El siguiente ejemplo se basa en Modelo AdventureWorks Sales (EDM). El URI incluye el conjunto de entidades Address y la clave: "https://localhost:50781/AdvWksSalesS.svc/Address(32523)". Si la entidad que se va a quitar forma parte de una jerarquía de herencia, se requiere el elemento de sintaxis __metadata:
"{__metadata:{Uri:'/Addres(32523/', " +
"Type:'AdventureWorksModel.Address'}}"
Se muestra un ejemplo completo que usa Formato JSON (marco de trabajo de los servicios de datos de ADO.NET) para quitar un elemento de datos del conjunto de entidades Address en el bloque de código ubicado al final de esta descripción.
Dicho código elimina una entidad Address del servicio de datos que implementa AdventureWorksModel. Se crea HttpWebRequest r con el URI del tipo de entidad que se va a eliminar, https://localhost:50781/AdvWksSalesS.svc/Address(32523, como el único parámetro de su constructor.
El cuerpo de la solicitud se asigna a una cadena denominada requestPayload. El método se establece en "DELETE". ContentType se asigna al protocolo json. La línea r.Accept = "application/json" indica al servidor que envíe la respuesta, si la hay, codificada utilizando el protocolo json.
Si el servicio está protegido por un esquema de autenticación basado en transporte como autenticación básica HTTP, se pueden pasar las credenciales asignándolas a la solicitud. En el siguiente ejemplo, se usan DefaultCredentials.
La solicitud r tiene formato de texto Unicode. Se usa una variable UTF8Encoding para obtener la longitud de la solicitud en bytes con el fin de escribir los datos digitales en el objeto Stream de la solicitud. Se asigna el objeto HttpWebResponse al llamar a GetResponse en la solicitud. El código r.GetResponse envía los datos y obtiene la respuesta. Se usa otro objeto Stream, rspStm, para contener los datos devueltos por GetResponseStream.
HttpWebRequest r =
WebRequest.Create(
"https://localhost:50781/AdvWksSalesS.svc/Address(32523)")
as HttpWebRequest;
string requestPayload = "{__metadata:{Uri:'/Address(32523)/', " +
"Type:'AdventureWorksModel.Address'}}";
r.Method = "DELETE";
UTF8Encoding encoding = new UTF8Encoding();
r.ContentLength = encoding.GetByteCount(requestPayload);
r.Credentials = CredentialCache.DefaultCredentials;
r.Accept = "application/json";
r.ContentType = "application/json";
//Write the payload to the request body.
using ( Stream requestStream = r.GetRequestStream())
{
requestStream.Write(encoding.GetBytes(requestPayload), 0,
encoding.GetByteCount(requestPayload));
}
try
{
HttpWebResponse response = r.GetResponse() as HttpWebResponse;
string responseBody = "";
using (Stream rspStm = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(rspStm))
{
textBoxResponse.Text = textBoxResponse.Text +
"Response Description: " +
response.StatusDescription;
textBoxResponse.Text = textBoxResponse.Text +
"Response Status Code: " + response.StatusCode;
textBoxResponse.Text = textBoxResponse.Text +
"\r\n\r\n";
responseBody = reader.ReadToEnd();
}
}
textBoxResponse.Text = "Success: " + response.StatusCode.ToString();
}
catch (System.Net.WebException ex)
{
textBoxResponse.Text = textBoxResponse.Text +
"Exception message: " + ex.Message;
textBoxResponse.Text = textBoxResponse.Text +
"\r\nResponse Status Code: " + ex.Status;
textBoxResponse.Text = textBoxResponse.Text + "\r\n\r\n";
// get error details sent from the server
StreamReader reader =
new StreamReader(ex.Response.GetResponseStream());
textBoxResponse.Text = textBoxResponse.Text + reader.ReadToEnd();
}
Para obtener más información sobre el uso de los protocolos con el método DELETE, vea Método DELETE (marco de trabajo de servicios de datos de ADO.NET).
Vea también
Conceptos
Método DELETE (marco de trabajo de servicios de datos de ADO.NET)
HttpWebRequest GET (marco de trabajo de los servicios de datos de ADO.NET)
HttpWebRequest PUT (marco de trabajo de los servicios de datos de ADO.NET)
HttpWebRequest POST (marco de trabajo de los servicios de datos de ADO.NET)
PUT, POST y DELETE (marco de trabajo de servicios de datos de ADO.NET)