我收到错误401,非自动访问
来自Webclient的错误消息:
远程服务器返回错误:(401)未经授权。
如果我想通过c#webclient类访问目录。 问题:目录faild的授权,连接工作,目录中的文件列表也已经显示。
我已经将目录保存在我的提供商的浏览器界面上。 我还测试了.htaccess以使用用户名和密码保护此目录,但没有成功。
也许我做错了什么,但代码必须没问题,因为如果我添加 选项+索引 仅限于我已经提到的.htaccess来获取此目录中的文件列表。但是,如果我想下载这些文件,则会发生上述错误(401未经授权的访问)。
您是否有任何想法如何使用用户名和密码通过C#webclient从此目录下载文件来更改对我的目录的访问权限?
我的代码:
Client.UseDefaultCredentials = true;
Client.Credentials = new NetworkCredential("user", "pw");
Directory.CreateDirectory(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar + "DownloadArchive");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url/directory");
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string html = reader.ReadToEnd();
Regex regex = new Regex(GetDirectoryListingRegexForUrl("url/directory"));
MatchCollection matches = regex.Matches(html);
if (matches.Count > 0)
{
foreach (Match match in matches)
{
if (match.Success)
{
Client.DownloadFile("url/directory" + match.Groups["name"],
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\" + "DownloadArchive" + Path.DirectorySeparatorChar +
match.Groups["name"]);
writer.Log("File " + match.Groups["name"] + " downloaded into " +
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar + "DownloadArchive");
}
}
}
}
}
.htaccess,用于读取目录中的所有文件名:
Options +Indexes
.htaccess,我尝试添加用户名和密码:
AuthType Basic
AuthUserFile /root/.passwd
AuthName "HTACCESS TEST"
order deny,allow
allow from all
require valid-user
目录root中的.passwd是通过root服务器上的putty用htpasswd程序创建的:
UserName:{SHA}...........................