HTTPWebRequest “PONER” estado de error 405 Método no permitido en IIS7

Mi aplicación usar HttpWebRequest “Poner” método para subir el archivo en la asp.net apps alojadas en iis7. Yo tenía un Código de Estado de error 405 Método No Permitido. He probado todas las soluciones que he encontrado en el foro durante 2 días, incluyendo la eliminación de la webDav en los controladores, agregando que “Poner” el método en los controladores ( como se encuentra en http://blogs.msdn.com/b/joseph_fultz/archive/2009/07/23/enabling-the-put-verb-with-handlers-and-iis-7-0.aspx), vuelva a registrar asp.net en iis. Pero ninguna de las soluciones de trabajo en mi caso.

Puedo ejecutar Seguimiento de solicitudes con Error de iis y, a continuación está el error:

MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName  StaticFileModule
Notification    128
HttpStatus  405
HttpReason  Method Not Allowed
HttpSubStatus   0
ErrorCode   2147942401
ConfigExceptionInfo     
Notification    EXECUTE_REQUEST_HANDLER
ErrorCode   Incorrect function. (0x80070001)
    MODULE_SET_RESPONSE_ERROR_STATUS
Warning     

ModuleName="StaticFileModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="405", HttpReason="Method Not Allowed", HttpSubStatus="0", ErrorCode="Incorrect function

Cualquier ayuda es muy apreciada. Gracias.
Mi asp.net apps/forma fue desarrollada con Visual Studio 2008 y publicado en iis 7.

————————————— ACTUALIZACIÓN

El código para controlar el HttpWebRequest (PUT) es el siguiente:
Tomó el usuario token de autenticación y verificación. Después de que se creó un vale de autenticación y de respuesta al usuario.

     tokenSignature = false;

        //To capture the tokenId
        string MainString = Request.Headers.ToString();
        int FirstChr = MainString.IndexOf("*=");
        MainString = MainString.Substring(FirstChr + 2);
        int secondChr = MainString.IndexOf("%");
        tokenId = MainString.Substring(0, secondChr);


        //to Write the received encrypted token into temporary folder
        FileStream fs = new FileStream(AppsConfig.temp + tokenId, FileMode.Create);
        BinaryWriter bw = new BinaryWriter(fs);

        //Convert the listenerRequest into InputStream to write the token
        Stream InputStream = Request.InputStream;
        byte[] inData = new byte[32768];
        int bytesRead;

        while ((bytesRead = InputStream.Read(inData, 0, inData.Length)) > 0)
        {
            bw.Write(inData, 0, bytesRead);
        }

        //close the connection that is used to write the token
        bw.Close();
        fs.Close();

        //Read the temporary encrypted token (for decryption purposes)
        fin = File.OpenRead(AppsConfig.temp + tokenId);

        //To read the private key
        Stream prSignKey = File.OpenRead(AppsConfig.privateKey);
        PgpSecretKey pgpSec;
        PgpSecretKeyRingBundle ringBundle = new PgpSecretKeyRingBundle(PgpUtilities.GetDecoderStream(prSignKey));

        //Get the company key Id and passphrase
        String[] getText = new String[2];
        int no = 0;
        TextReader readFile = new StreamReader(AppsConfig.keyFile);

        do
        {
            getText[no] = readFile.ReadLine();
            no++;
        } while (no < 2);
        readFile.Close();
        long KeyId = Int64.Parse(getText[0]);
        Char[] passwd = getText[1].ToCharArray();
        //Get the private key
        pgpSec = ringBundle.GetSecretKey(KeyId);
        PgpPrivateKey pgpPrivate = pgpSec.ExtractPrivateKey(passwd);

        //Close all unnecessary connections
        InputStream.Close();
        prSignKey.Close();
        readFile.Close();

        //Call the decrypt method to decrypt the token
        decryptFile(fin, pgpPrivate, "original.xml", tokenId);

        if (tokenSignature == true)
        {
            //Create the authentication cookie and add this cookie to the httpResponse
            //This authentication cookie would be used to access the resource.aspx
            HttpCookieCollection cc = Response.Cookies;
            FormsAuthentication.SetAuthCookie(tokenId, false);
            cc = Response.Cookies;

        //remove the temporary file that was created earlier.
            File.Delete(AppsConfig.temp + tokenId);
            File.Delete(AppsConfig.temp + tokenId + ".bin");
        }
        else
        {
            Server.Transfer("~/Error.aspx?errorMessage=" + "SignatureFailed");

        }
por favor, mostrar algo de código fuente… esp. el “target” en su asp.net aplicación que se encarga de la solicitud PUT…

OriginalEl autor iLoeng | 2011-08-24

2 respuestas

  1. 13

    Hay un par de rutas demasiado solucionar este problema:

    1) Desinstalar WebDAV desde el servidor por completo. Usted puede hacer esto desde el Windows Agregar/Quitar funciones de la aplicación. Esto requerirá un reinicio.

    2) La segunda solución es simple. A) Ir al Sitio de IIS y haga clic en módulos. Encontrar el WebDAV módulo y quitar.

    Ahora usted puede todavía utilizar WebDAV en sus otros sitios y no interferir con el método PUT en este sitio.

    HTTPWebRequest

    B) Usted puede necesitar para encontrar la correcta asignación de controlador y agregar el verbo PONER.

    Trabajó como un encanto, gracias.
    Trabajó para mí 🙂

    OriginalEl autor

  2. 1

    No creo que el problema está en el código…si el verbo no está permitido, el cliente no va a ser capaz de PONER los archivos. No es decir “no autorizado”, que sería el caso si se tratara de un problema de permisos…creo que esta es todavía una configuración de IIS. Consulte este enlace:

    http://support.microsoft.com/kb/942051/en-us

    Para hacer las cosas más simples en sí mismo, usted puede comprobar fuera de esta herramienta que he oído que es bueno para estas cosas:

    http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21625

    HTH.

    Como usted ha mencionado, el problema no está en mi código como soy capaz de hacerlo funcionar en el dev de la máquina con asp.net el sistema de ficheros. Es sólo cuando se publica en el iis, el problema aparece. Traté de sus sugerencias, pero sin suerte hasta el momento.
    Ambos enlaces están rotos, sólo para tu INFORMACIÓN.

    OriginalEl autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *