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 ...
随机推荐
- 842. Split Array into Fibonacci Sequence
Given a string S of digits, such as S = "123456579", we can split it into a Fibonacci-like ...
- blog搬家须知
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻. 地址:这里. 不过这里也是会同步更新的
- Python——可变和不可变类型数据
什么是不可变类型? 存储空间保存的数据不允许被修改,这种数据就是不可变类型. 常见的不可变类型有: 数字类型 int, bool, float, complex, long(2.x) 字符串 str ...
- casperjs进行web功能自动化测试demo
通过一周多的学习和总结,终于掌握了casperjs用于自动化的方法,填平了大大小小的各种坑. casperjs是一个新兴的测试框架,网上资料很少,基本上靠翻译英文资料. 贡献出来,供大家参考: / ...
- alter table添加表约束
翻阅了一下网上关于alter table添加表约束的资料,学习下,然后供自己以后使用. 仅仅供自己使用... 总结alter table ### add constraint ## 使用方法 添加表约 ...
- gevent 传参, 中文编码
#coding=utf-8 import os from gevent import monkey,pool monkey.patch_all() import gevent import time ...
- Python web前端 04 盒子模型
Python web前端 04 盒子模型 盒子模型是由内容(content).内边距(padding).外边距(margin).边框(border)组成的 一.边框 border #border 边框 ...
- Hero
Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Description When pl ...
- Tensorlflow-解决非线性回归问题
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt #使用numpy生成200个随机点,范围从-0.5到0 ...
- edX MITx: 6.00.1x Introduction to Computer Science and Programming Using Python 课程 Week 1: Python Basics Problem Set 1 Problem 3
Assume s is a string of lower case characters. Write a program that prints the longest substring of ...