Principales respuestas
Error de la solicitud con el código de estado HTTP 401

Pregunta
-
Buenos días
Tengo un website donde me logueo con un usuario del active directory, hasta allí todo bien; porque cuando lo debagueo confirmo que sí lo hace.
El problema es cuando llama a un método GetSec_groupings que obtiene un valor de la base de datos
Cuando debagueo veo este error:
System.Net.WebException: Error de la solicitud con el código de estado HTTP 401: Unauthorized.\r\n
en System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse
(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)\r\n
en System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)\r\n
en wsAccesosRRHH.wsAccesosRRHH.GetSec_groupings(String application, String group_name, String user_name, String usuario)
en c:\\Users\\usuweb\\AppData\\Local\\Temp\\Temporary ASP.NET Files\\website20\\219a2537\\3073cd00\\App_WebReferences.nch5lsvu.0.cs
:línea 259\r\nMi IIS está en un servidor windows server 2012. mi application pool está como Enabled anonymous le he puesto como specific user a IUSR y le he dado acceso a la carpeta C:\inetpub\wwwroot a IUSR.
Hice la prueba seleccionando el application pool identity, igual me sale el error.
Estoy utilizando visual studio 2008 con c#, sql server 2000
Gracias por sus respuestas!
Respuestas
-
de donde sale Var.wsAcc ? porque se supoe que deberias definir la instancia dentro del using
DataSet ds = new DataSet(); try { using(var svc = new serviceNamespace.serviceClass()) { svc.Credentials = new NetworkCredential(s_Usu, s_Cla, Var.s_glb_dominio); ds = svc.GetSec_groupings(Var.s_glb_sistema, "", s_Usu, s_Usu); } }
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator viernes, 17 de noviembre de 2017 16:37
- Marcado como respuesta Pablo RubioModerator lunes, 20 de noviembre de 2017 15:31
Todas las respuestas
-
hola
Pero desde el cliente como envias las credencias cuando invocas el servicio web ?
si se trata de un servicio asmx y en el cliente has creado la web reference, o sea tienes el proxy en codigo para invocar el servicio, puedes pasar credenciales
HOW TO: Pass Current Credentials to an ASP.NET Web Service
como veras asigna la propiedad "Credentials", quizas en tu caso debas asignar una NetworkCredential
ws.Credentials = new NetworkCredential(username, password, domain);
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP miércoles, 15 de noviembre de 2017 16:34
-
Sí, tengo las webreferences. Y también utilizo las credenciales que indicas
Este es mi código:
public void CargaPerfil(string s_Usu, string s_Cla)
}
{
string s_Cod_Per = "", s_Nom_Per = "";
Var.wsAcc.Credentials = new NetworkCredential(s_Usu, s_Cla, Var.s_glb_dominio);
DataSet ds = new DataSet();
try
{
ds = Var.wsAcc.GetSec_groupings(Var.s_glb_sistema, "", s_Usu, s_Usu);
}
catch (Exception ex)
{
lblMen.Text = "Error: No carga el Rol del usuario " + ex.ToString().Trim();
}
finally
{
if (ds.Tables.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow dtr = ds.Tables[0].Rows[i];
s_Cod_Per = dtr["group_name"].ToString().Trim();
s_Nom_Per = dtr["description"].ToString().Trim();
}
}
} -
de donde sale Var.wsAcc ? porque se supoe que deberias definir la instancia dentro del using
DataSet ds = new DataSet(); try { using(var svc = new serviceNamespace.serviceClass()) { svc.Credentials = new NetworkCredential(s_Usu, s_Cla, Var.s_glb_dominio); ds = svc.GetSec_groupings(Var.s_glb_sistema, "", s_Usu, s_Usu); } }
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator viernes, 17 de noviembre de 2017 16:37
- Marcado como respuesta Pablo RubioModerator lunes, 20 de noviembre de 2017 15:31
-
-