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并没有配置就执行了,然后结果就是网页一直崩溃,最后通过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部分代码
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 }