远程服务器返回错误:(405)方法不允许
本文关键字:方法 不允许 服务器 返回 错误 | 更新日期: 2023-09-27 18:25:32
我想使用HttpWebRequest将文件发布到服务器:
private void testUpload()
{
FileStream source = File.Open(@"C:'test.txt", FileMode.Open);
var request =
(HttpWebRequest)WebRequest.Create(new Uri("http://example.com/Project/"));
request.Method = "POST";
request.BeginGetResponse(DataUploadCompleted, request);
}
private void DataUploadCompleted(IAsyncResult ar)
{
var request = (HttpWebRequest)ar.AsyncState;
var response = request.EndGetResponse(ar);
}
我得到了这个例外:
远程服务器返回错误:(405)方法不允许。
当我访问时:"http://example.com/Project/",页面显示:
Directory Listing Denied
This Virtual Directory does not allow contents to be listed.
然而,我已经为文件夹:项目安装了chmod 777,并允许IIS用户上传文件(完全权限)。
为什么我会有那个例外?
我寻找解决方案。一些人建议使用:
NetworkCredential myCred = new NetworkCredential("myusername", "mypassword");
request.Credentials = myCred;
myusername和mypassword是FTP的帐户吗?
如果我必须使用FTP帐户,那么我不喜欢这样。我可以使用其他凭据而不是FTP帐户吗?因为我不想给ftp帐户,人们会访问我的服务器。
转到IIS,然后打开目录浏览并启用它,这应该可以在
我需要在服务器上添加一个网页来处理上传。
有时您想要"GetResponse();"的服务器中的IIS配置会出现此错误。
为了防止服务器被大量请求攻击WebApi,IIS检查用户代理,当没有用户代理时,服务器返回405错误。
您必须设置用户代理,例如浏览器用户代理才能传递此错误。
查看此代码并在您的代码中使用:
var request = (HttpWebRequest) WebRequest.Create(item.Url);
request.Method = WebRequestMethods.Http.Get;
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.7) Gecko/20060917 Firefox/1.9.0.1";
request.AllowAutoRedirect = true;
request.Timeout = 1000 * 300;
request.KeepAlive = false;
request.ReadWriteTimeout = 1000 * 300;
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;