WebService "因 URL 意外地以 结束,请求格式无法识别" 的解决方法

最近在做一个图片上传的功能,js调用用webservice进行异步访问服务器,对于不是经常用webservice的菜鸟来说,经常会遇到以下的问题(起码我是遇到了)

在页面上写了js调用代码如下所示:

 1   httpRequest.open("GET", "WebServices.asmx/GetUploadStatus", true);
 2                     //httpRequest.setRequestHeader("If-Modified-Since","0"); 
 3                     httpRequest.send();
 4                     httpRequest.onreadystatechange = function () {
 5                         if (httpRequest.readyState == 4 && httpRequest.status == 200) {
 6                             var resultValue = httpRequest.responseText;
 7                             //表示初始化上传时,显示进度是0%
 8                             if (resultValue == "") {
 9                                 completeResult.innerHTML = "上传进度:0%";
10                                 return;
11                             }
12                             //设置进度条
13                             bar.style.width = 2 * resultValue + "px";
14 
15                             completeResult.innerHTML = "上传进度:" + resultValue + "%";
16                             //当result为100时,不再进行进度条的更新
17                             if (resultValue == 100) {
18                                 //自动消失
19                                 window.clearInterval(vailed);
20                                 completeResult.innerHTML = "上传进度:100% " + "上传已完成!";
21                             }
22                         }
23                     }
24                 }, 400);
调用webservice访问服务器并获取返回信息

 刚刚完成,webservice并没有配置就执行了,然后结果就是网页一直崩溃,最后通过FireBUg查看了一下 终于恍然大悟,原来webservice没进行配置,于是就在网上去搜解决办法,用了0.1秒的时间,终于找到了。就是配置webconfig.如下代码所示:

1       <webServices>
2           <protocols>
3               <add name="HttpGet" />
4               <add name="HttpPost" /> 
5               <add name="Unknown" />
6               <add name="HttpSoap" />
7           </protocols>
8       </webServices>
9   </system.web>
配置webservice节点

配置成功后,程序正常运行。

最后贴上webservice部分代码

 1  //获取上传文件信息类(从Session中取出来)
 2             UploadInfo upload = RequestUploadFiles() as UploadInfo;
 3             //若对象不为空,并且已经准备好  
 4             if (upload != null && upload.IsReady)
 5             {
 6                 long uploadedSize = upload.UploadedLength;   //已上传大小
 7                 long total = upload.ContentLength;           //上传文件总大小  
 8                 //将其转化为百分比  
 9                 float percentComplete = (float)uploadedSize / (float)total * 100;
10 
11                 HttpContext.Current.Response.Write(percentComplete.ToString("F2")); //保留两位小数  
12             }
13             else
14             {
15                 //还没有准备好上传文件  
16                 HttpContext.Current.Response.Write("10");
17             }
和本问题相关的webservice(GetUploadStatus函数)部分代码

 

posted @ 2014-07-31 10:32  竹林溪风  阅读(2401)  评论(0编辑  收藏  举报