gpt4 book ai didi

asp.net - HTTPWebRequest "PUT"错误状态 405 IIS7 中不允许的方法

转载 作者:行者123 更新时间:2023-12-02 05:37:10 24 4
gpt4 key购买 nike

我的应用程序使用 HttpWebRequest“Put”方法将文件上传到 iis7 中托管的 asp.net 应用程序中。我遇到错误状态代码 405 不允许方法。我已经尝试了两天在论坛中找到的所有解决方案,包括删除处理程序中的 webDav、在处理程序中添加“Put”方法(如 http://blogs.msdn.com/b/joseph_fultz/archive/2009/07/23/enabling-the-put-verb-with-handlers-and-iis-7-0.aspx 中找到的)、将 asp.net 重新注册到 iis 中。但这些解决方案都不适用于我的情况。

我在 iis 中运行失败请求跟踪,错误如下:

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

非常感谢任何帮助。谢谢。我的 asp.net 应用程序/表单是使用 Visual Studio 2008 开发的,并在 iis 7 中发布。

----------------------------------------------------更新

处理 HttpWebRequest (PUT) 的代码如下:它获取了用户身份验证 token 并对其进行验证。之后,它创建了一个身份验证票证并将响应返回给用户。

     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");

}

最佳答案

有几个路线也可以解决这个问题:

1) 从服务器上完全卸载 WebDAV。您可以通过 Windows 添加/删除功能应用程序执行此操作。这将需要重新启动。

2) 第二种解决方案很简单。 A) 转至 IIS 站点并单击模块。找到 WebDAV 模块并将其删除。

现在您仍然可以在其他网站上使用 WebDAV,并且不会干扰此网站上的 PUT 方法。

enter image description here

B) 您可能需要找到正确的处理程序映射并添加 PUT 动词。

关于asp.net - HTTPWebRequest "PUT"错误状态 405 IIS7 中不允许的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7170628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com