HTTPWebRequest "PUT" Fehler-status 405-Methode nicht erlaubt in IIS7
Meine app verwenden HttpWebRequest "Put" - Methode der upload-Datei in die asp.net apps gehostet in iis7. Ich hatte einen Fehler-Status-Code 405-Methode Nicht Erlaubt. Ich habe versucht, alle Lösungen, die ich kann gefunden im forum für 2 Tage, einschließlich entfernen der webDav-Handler, den Zusatz "Put" - Methode in den Handler ( wie in http://blogs.msdn.com/b/joseph_fultz/archive/2009/07/23/enabling-the-put-verb-with-handlers-and-iis-7-0.aspx), re-registrieren asp.net in iis. Aber keine der Lösungen bei mir funktioniert.
Ich führen Sie die Ablaufverfolgung für anforderungsfehler in iis, und unten ist die Fehlermeldung:
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
Jede Hilfe wird sehr geschätzt. Danke.
Meine asp.net apps/form wurde entwickelt mit Visual Studio 2008 und veröffentlicht in iis 7.
--------------------------------------- UPDATE
Der code zum verarbeiten der HttpWebRequest (PUT) unter:
Es nahm die Benutzer-Authentifizierung token, und bestätigen Sie es. Nach, dass es erzeugt eine Authentifizierungs-ticket-und-Antwort zurück an Benutzer.
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");
}
- bitte zeigen Sie einige source Codes... esp. das "target" in Ihre asp.net app mit der PUT-Anfrage...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar Routen zu beheben:
1) Deinstallieren Sie die WebDAV-vom server komplett. Sie können dies tun, aus dem Windows Hinzufügen/Entfernen von features der app. Dies wird einen Neustart erfordern.
2) Die zweite Lösung ist einfach. A) Gehen Sie auf die IIS-Website und klicken Sie auf Module. Finden Sie die WebDAV-Modul und entfernen Sie es.
Können Sie jetzt noch mit WebDAV auf Ihre anderen Seiten und nicht stören mit der PUT-Methode, die auf dieser Website.
B) müssen Sie möglicherweise zu finden, die richtige handler-mapping und fügen Sie die PUT-verb.
Ich glaube nicht, dass das problem in deinem code...wenn die PUT-verb ist nicht zulässig, kein client wird in der Lage sein, Dateien. Es besagt nicht "Unerlaubte", das wäre der Fall, wenn ein Berechtigungen-problem...ich denke, das ist noch eine IIS-Konfiguration ein. Prüfen Sie diesen link aus:
http://support.microsoft.com/kb/942051/en-us
Machen die Dinge einfacher auf sich selbst, die Sie möglicherweise überprüfen Sie heraus dieses tool, das ich gehört habe gut für dieses Zeug:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21625
HTH.