思归大哥,帮忙啊,200

雪狼1234567 2004-11-23 02:29:19
我想取一个WEB服务器上的文件目录或列表,但在本机测试可以,有其它机器上老是报405错误
下面是源代码:
public static SortedList GetDirectoryContents(string url, bool deep)
{
//Retrieve the File
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(url);
Request.Headers.Add("Translate: f");
Request.Credentials = CredentialCache.DefaultCredentials;

string requestString = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"+
"<a:propfind xmlns:a=\"DAV:\">"+
"<a:prop>"+
"<a:displayname/>"+
"<a:iscollection/>"+
"<a:getlastmodified/>"+
"</a:prop>"+
"</a:propfind>";

Request.Method = "PROPFIND";
if (deep == true)
Request.Headers.Add("Depth: infinity");
else
Request.Headers.Add("Depth: 1");
Request.ContentLength = requestString.Length;
Request.ContentType = "text/xml";

Stream requestStream = Request.GetRequestStream();
requestStream.Write(Encoding.ASCII.GetBytes(requestString),0,Encoding.ASCII.GetBytes(requestString).Length);
requestStream.Close();

HttpWebResponse Response;
StreamReader respStream;
try
{
Response = (HttpWebResponse)Request.GetResponse();
respStream = new StreamReader(Response.GetResponseStream());
}
catch (WebException e)
{
Debug.WriteLine("APPMANAGER: Error accessing Url " + url);
throw e;
}

StringBuilder SB = new StringBuilder();

char[] respChar = new char[1024];
int BytesRead = 0;

BytesRead = respStream.Read(respChar,0,1024);

while (BytesRead>0)
{
SB.Append(respChar,0,BytesRead);
BytesRead = respStream.Read(respChar,0,1024);
}
respStream.Close();

XmlDocument XmlDoc = new XmlDocument();
XmlDoc.LoadXml(SB.ToString());

XmlNamespaceManager nsmgr = new XmlNamespaceManager(XmlDoc.NameTable);
nsmgr.AddNamespace("a", "DAV:");

XmlNodeList NameList = XmlDoc.SelectNodes("//a:prop/a:displayname",nsmgr);
XmlNodeList isFolderList = XmlDoc.SelectNodes("//a:prop/a:iscollection",nsmgr);
XmlNodeList LastModList = XmlDoc.SelectNodes("//a:prop/a:getlastmodified",nsmgr);
XmlNodeList HrefList = XmlDoc.SelectNodes("//a:href",nsmgr);

SortedList ResourceList = new SortedList();
Resource tempResource;

for (int i=0; i < NameList.Count; i++)
{

if (HrefList[i].InnerText.ToLower(new CultureInfo("en-US")).TrimEnd(new char[] {'/'}) != url.ToLower(new CultureInfo("en-US")).TrimEnd(new char[] {'/'}))
{
tempResource = new Resource();
tempResource.Name = NameList[i].InnerText;
tempResource.IsFolder = Convert.ToBoolean(Convert.ToInt32(isFolderList[i].InnerText));
tempResource.Url = HrefList[i].InnerText;
tempResource.LastModified = Convert.ToDateTime(LastModList[i].InnerText);
ResourceList.Add(tempResource.Url,tempResource);
}
}

return ResourceList;
}
...全文
288 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheAres 2005-06-17
  • 打赏
  • 举报
回复
目录没有浏览是403,没有权限。405意思是说你的这个PROPFIND方法我理解不了。

如果需要验证,会是401,如果,WebDav被禁止,应该是501,没有实现这个方法。

405最大的可能就是非IIS浏览器,没有实现Webdav的扩展,或者是被删除了什么的。

你去看看对方的web服务器到底是什么?
glhx 2005-06-16
  • 打赏
  • 举报
回复
根据你的出错提示405表示:method not allow,应该是web站点没有允许目录浏览,在iis里设置一下就可以了。
glhx 2005-06-16
  • 打赏
  • 举报
回复
其它机器的web站点要设置成允许目录浏览才可以。
yangjundeng 2005-06-16
  • 打赏
  • 举报
回复
UP
fphuang 2005-06-16
  • 打赏
  • 举报
回复
友情UP,学习
oyljerry 2005-06-16
  • 打赏
  • 举报
回复
看一下具体的错误
sniper81 2005-06-16
  • 打赏
  • 举报
回复
报什么错误?贴出来看看
  • 打赏
  • 举报
回复
这么牛的人?
xiaoyuerisdahai 2005-06-16
  • 打赏
  • 举报
回复
占位之
fellowcheng 2005-06-16
  • 打赏
  • 举报
回复
思归大侠估计要晚上才会现身
先关注下
oneway888 2005-06-16
  • 打赏
  • 举报
回复
等待猩猩
hunter_32 2005-06-16
  • 打赏
  • 举报
回复
哈思歸不在啊我先睡一會兒
  • 打赏
  • 举报
回复
思归到外地出差去了。没时间,要过一向才能回来。楼主你再等等啊。。
真相重于对错 2005-06-16
  • 打赏
  • 举报
回复
服务器上没权限
singleflower 2004-11-23
  • 打赏
  • 举报
回复
占位子up
Bmonkey 2004-11-23
  • 打赏
  • 举报
回复
占位子up
tulippopo 2004-11-23
  • 打赏
  • 举报
回复
搬个凳子等思归讲课!
zzcwhq 2004-11-23
  • 打赏
  • 举报
回复
学习
雪狼1234567 2004-11-23
  • 打赏
  • 举报
回复
报错就在try里面的

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧