none
Problema al utilizar el servicio REST en asp.net web api 2.2 RRS feed

  • Pregunta

  • La web la tengo montada en github aqui esta la direccion

    https://github.com/onzulinapps/planningactivities

    El caso es que tuve que formatear y me pongo a probar a intentar registrar un usuario usando el servicio REST publicando la web en mi servidor IIS 8 Express que trae, Windows 8.1 y no consigo que funcione la aplicacion cliente que me da un error diciendome access denied 0x80070005 y pruebo en la aplicacion de Windows Phone 8.1 y me salta otro error 0x80072EFD en el emulador de Windows Phone pero en el mismo sitio en la version de Windows Phone me da ekl mismo error el 0x80070005 access denied la porcion de codigo es esta

    try
                            {
                                response = await httpClient.GetAsync(uri);
    
    
                            }
                            catch (Exception ex)
                            {
                                //MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK);
                                MessageDialog dialog = new MessageDialog(ex.Message, "information");
                                dialog.ShowAsync();
                            }
                            //response obtiene lacadena con esa cadena tengo que trabajar para saber cuantos id hay
                            if (response.Content != null)
                            {
                                //string jsonString = jsonObject.Stringify();
                                //realizamos el registro mandando la cadena jsonString 
                                //CryptoPassHttp cryptoPassHttp = new CryptoPassHttp();
                                bool registro = await CryptoPass.RegisterUser(jsonString);
                                if (registro == false)
                                {
                                    MessageDialog dialog = new MessageDialog("the user exist in the database");
                                    dialog.ShowAsync();
                                    this.Frame.Navigate(typeof(Register));
    
                                }
                                else
                                {
                                    MessageDialog dialog = new MessageDialog("Please confirm your account in your email");
                                    dialog.ShowAsync();
                                    this.Frame.Navigate(typeof(MainPage));
                                }
                               
                            }
                            else
                            {
                                MessageDialog dialog = new MessageDialog("don't run conection internet the smartphone", "information");
                                await dialog.ShowAsync();
                            }

    al final en el await dialog.ShowAsymc() me pone el codigo de usuario no controlo UnauthorizedAccessException HRESULT: 0x80070005. 

    Yo he imaginado algun problema de acceso en la carpeta de C:\inetpub\wwwroot que es donde apunta el servidor para servir la web, he agregado una aplicacion del grupo de aplicaciones .NET v4.5 y el usuario que accede lo he dejado por defecto IUSR, ¿como soluciono el problema?, saludos.

    miércoles, 22 de julio de 2015 10:37

Todas las respuestas

  • Buenas!

    Creo que tu mismo te respondes! Pones el código del cliente así que no sé lo que hace la api REST, pero sospechas de permisos en c:\inetpub\wwwroot.

    Haces algo en esta uri? Escribir un fichero? Quizá conectar con la BBDD?

    Mira, porque da toda la pinta que el error está en el servidor. Luego, la solución ya depende del tipo de error:

    1. Es un error guardando un fichero en una carpeta dentro de c:\inetpub\wwwroot? Pues o cambias el usuario del application pool de iis para usar uno que tenga permisos, o mediante ACLs das permiso al usuario IUSR para leer/escribir en la carpeta (NO en todo c:\inetput\wwwroot, solo en la que necesites)
    2. Es un error accediendo a BBDD? Estás pasando las credenciales correctas? Si es SQL Server es autenticación por SQL o por Windows? Si es por Windows... el usuario IUSR tiene acceso a SQL? (Eso no se detecta en dev, porque en dev IIS express se ejecuta con nuestras credenciales que, generalmente, tienen acceso a nuestro propio SQL). Si no, lo mejor es cambiar a autenticación SQL (configurar SQL y modificar cadena conexión) o bien que el application pool use otro usuario con permisos al SQL Server.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    miércoles, 22 de julio de 2015 12:05
  • hola

    entiendo que el codigo quer muestras es el cliente que consume la funcionalidad de web api

    imagino cuando mencionas el dialog.ShowAsymc() es el que ingresa por el catch, no ?

    como defiens el uri para invocar el web api ?

    el host del servicio webapi tambien lo modificaste o realizaste algun cambio? si es asi de casualidad habras habilitado seguridad integrada con windows ?

    el webapi se conecta a una bse de datos ? si es asi defines ene l connection string un usuario y password con seguridad de sql ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 22 de julio de 2015 12:10
  • lo gracioso es que pruebo el mvc5 o sea la pagina web y funciona perfectamente me registra y me loguea usuarios, pero el servicio web api no me funciona, para registrar usuarios esa parte que he mostrado es la de registro de usuarios y me salta con el error ese, la base de datos es PostgreSQL y antes de restaurar windows me funcionaba el webapi sin problemas, saludos.
    miércoles, 22 de julio de 2015 14:11
  • Hey muchisimas gracias por contestar el error estabaproducido por algo tan sencillo como la direccion ip de mi pc que no habia puesto la que pone en el campo uri dentrpo del codigo ponia la 192.1768.1.4 y mi pc la tenia configurado con el DHCP, asi que muchas gracias a los 2 por ayudarme.
    jueves, 23 de julio de 2015 11:22