最近在做一个.net website项目,需要在客户端向服务器发送数据,对服务器端的记录文件进行更新。我采用的是WebClient类进行操作的,在执行WebClient.UpLoadString()方法的时候,遇到“错误405,不被允许的方法”。多次尝试各种解决方案,均无果而归。最后解决方案如下:
1.在服务器上打开IIS管理器
2.找到自己的网站项目
3.左键双击“处理程序映射”
![]()
4.在接下来的界面的右侧,找到“添加映射模块”的选项,单击
![]()
5.在“请求路径”中填写”*.+自己要修改的文件的后缀*,如:“*.xml”
6.在“模块”中选择“ProtocolSupportModule”
7.在“名称”中随便填写自定义名字,如“HanMeiMei_POST”
![]()
8.点击“请求限制”,进入“谓词”的Tab页面,指定“POST”谓词,最后保存所有设置。
完成以上所有设置之后,就可以用WebClient.UpLoadFile()等方法对服务器端文件进行修改了。
WebClient wc = new WebClient();
string data = wc.DownloadString("http://../OA_baobiao/VisitCount.xml");
.
.......操作代码省略
.
string s = Server.MapPath("../VisitCount.xml");
wc.UploadString(s, "POST", data);
上面的代码中要注意这一句:
string s = Server.MapPath("../VisitCount.xml");
如果还是用
wc.UploadString("http://../OA_baobiao/VisitCount.xml", "POST", data);
方法的话,data中的数据会保存到C盘中去的,需要用Server.MapPath(“../VisitCount.xml”)方法才能找到你虚拟目录下的xml文件,否则虽然wc.UpLoadString()被执行,但是却不能修改指定的xml文件。
另外,在调查诸多资料中,许多人都提到了IIS配置的问题,包括修改权限、WebDAV等等,我照着修改之后却并没有解决405错误,所以我又将这些修改都改回来了。如果有朋友照着我的方法修改之后,没有解决问题,请参照别的文档~
在使用WebClient上传数据时遇到了405错误。通过在IIS管理器中添加映射模块,指定POST谓词,并设置请求限制,解决了问题。确保使用Server.MapPath正确定位服务器上的文件,避免权限和WebDAV配置错误。
2400

被折叠的 条评论
为什么被折叠?



