码迷,mamicode.com
首页 > Web开发 > 详细

mvc路由引起异步调用web服务的问题

时间:2014-08-19 16:04:56      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   文件   

  从一篇blog得知使用脚本可以异步调用Web服务,觉得很新鲜,因为自己很少用到Web服务,所以决定写一写看看什么效果。

  首先在UI项目(我使用的是MVC4.0)里创建一个Web服务。

  bubuko.com,布布扣

  添加Web服务后,默认有一个HelloWorld方法。调用该方法有两种形式,一是服务端通过实例化对象调用,二是前端脚本异步

调用。代码分别是:

1.服务端调用

 

 public ActionResult Index()
 {
     WebService1 ws = new WebService1();
     var str = ws.HelloWorld();
     return View();
 }

 

2.脚本调用

 function CallBack() {
            $.ajax({
                type: "POST", //注意这个地方web服务不支持GET请求
                contentType: "application/json;utf-8",
                url: "http://localhost:7306/WebService1.asmx/HelloWorld",
                data: null,
                dataType: "json",
                success: function (result) {
                    alert("success");
                },
                error: function() {
                    alert("error");
                }
            });
        }

 CallBack();

  结果脚本调用发生错误。右击WebService1.asmx——》从浏览器查看——》点击调用HelloWorld,返回404错误。

  bubuko.com,布布扣

  

  我想这可能是MVC路由造成的。web服务无法根据路由规则找到HelloWorld方法,于是新建了一个MVC3.0(MVC3.0

默认是没有路由文件的)程序和一个WebForm程序。经测试在这两者中不存在这样的问题,我又把项目里的路由注释掉。

结果web服务可以正常访问了。

  经过一番测试,从而证实了自己的想法。看来,在存在路由的项目里,异步调用web服务还要进行简单的封装,即需要

把服务的方法放在控制器的某一方法里。这样,既不影响路由又能满足异步调用。

  上面说了mvc路由引起异步调用web服务的问题。还有一个问题是与路由无关。当你右击在浏览器查看调用HelloWorld

法时,刷新页面HelloWorld方法都能正常访问。但是如果你在浏览器url地址栏里回车,会发生下面错误,但并不影响使用。

bubuko.com,布布扣

  对于这一错误,个人觉得很是奇怪,有待查证。

  

  

 

mvc路由引起异步调用web服务的问题,布布扣,bubuko.com

mvc路由引起异步调用web服务的问题

标签:style   blog   http   color   使用   os   io   文件   

原文地址:http://www.cnblogs.com/paulhe/p/3916694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!