mvc路由引起异步调用web服务的问题
从一篇blog得知使用脚本可以异步调用Web服务,觉得很新鲜,因为自己很少用到Web服务,所以决定写一写看看什么效果。
首先在UI项目(我使用的是MVC4.0)里创建一个Web服务。
添加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错误。
我想这可能是MVC路由造成的。web服务无法根据路由规则找到HelloWorld方法,于是新建了一个MVC3.0(MVC3.0
默认是没有路由文件的)程序和一个WebForm程序。经测试在这两者中不存在这样的问题,我又把项目里的路由注释掉。
结果web服务可以正常访问了。
经过一番测试,从而证实了自己的想法。看来,在存在路由的项目里,异步调用web服务还要进行简单的封装,即需要
把服务的方法放在控制器的某一方法里。这样,既不影响路由又能满足异步调用。
上面说了mvc路由引起异步调用web服务的问题。还有一个问题是与路由无关。当你右击在浏览器查看调用HelloWorld
方法时,刷新页面HelloWorld方法都能正常访问。但是如果你在浏览器url地址栏里回车,会发生下面错误,但并不影响使用。
对于这一错误,个人觉得很是奇怪,有待查证。
mvc路由引起异步调用web服务的问题的更多相关文章
- 25.C# 异步调用Web服务
1.创建Web服务 1.1VS新建ASP.Net空Web应用程序 1.2添加Web服务新建项 1.3添加GetWeather方法和相关类 using System; using System.Coll ...
- HttpClient异步调用WEB服务
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- 动态调用web服务
通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...
- Android调用Web服务
现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...
- 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法
技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主 ...
- 在 SQL Server 的存储过程中调用 Web 服务
介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. ...
- Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务、WCF消息头添加安全验证Token
原文:Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务.WCF消息头添加安全验证Token 为什么选择wcf? 因为好像wcf和wpf就是哥俩,,, 为什么选择异步 ...
- 动态调用web服务 --WSHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Net;us ...
- 序列化和反序列化,异步调用web/wcf/函数
//xml序列化 public static string Seria(DataSet ds) { XmlSerializer serializer = new XmlSerializer(typeo ...
随机推荐
- jsonp的原理及其使用
原理: 1.创建script标签 2.src远程地址 3.返回的数据必须为js格式 1.因为浏览器处于安全原因不允许跨域请求,但是允许跨域倒入js文件,所以需要创建script标签 2.src远程地址 ...
- 20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
20165219 <Java程序设计>实验三(敏捷开发与XP实践)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:王彦博 学号:20165219 成绩: 指导教 ...
- 拆半搜索binary_search
//binary_search用于在有序的区间用拆半查找搜索等于某值得元素 #include<algorithm> #include<iostream> using names ...
- GitHub+Hexo 搭建个人网站详细教程
原文链接 GitHub+Hexo 搭建个人网站详细教程 前言: 随着互联网浪潮的翻腾,国内外涌现出越来越多优秀的社交网站让用户分享信息更加便捷.然后,如果你是一个不甘寂寞的程序猿(媛),是否也想要搭建 ...
- Pycharm关闭后Python.exe还是在后台运行
pycharm运行程序关闭后会弹出一个对话框: 一定要选择第一个,不然python.exe一直会在后台运行.
- JSP标签的用法
JSP动作标签: 通过动作标签,程序员可以在JSP页面中把页面的显示功能部分 封装起来,是整个页面更简洁和易于维护 <jsp:useBean> 装载一个将在JSP页面中使用的JavaBea ...
- spring security之logoutHandler中的CookieClearingLogoutHandler
CookieClearingLogoutHandler实现LogoutHandler 接口 在退出登录时实现清除指定“name” 的cookie. 例:清除name为Authorization的coo ...
- 【Jquery】jquery刷新页面(局部及全页面刷新)
下面介绍全页面刷新方法:有时候可能会用到window.location.reload()刷新当前页面.parent.location.reload()刷新父亲对象(用于框架)opener.locati ...
- 导出table为Excel
1.HTML <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...
- GCD - Extreme (II) UVA - 11426 数学
Given the value of N , you will have to nd the value of G . The de nition of G is given below: G = i ...