Для работы сервиса вам необходимо:
Добавьте в свой проект ссылку на System.Web.Extension
.
Добавьте using System.Web.Script.Services;
к своему источнику ws.
Добавить:
[ScriptService]
в ваш класс.
Добавить:
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
внутри вашего web.config под тегом <httpHandlers>
.
Если вы звоните getCar()
от нажатия кнопки, добавьте return false;
после вызова метода, чтобы щелчок не вызвал обратную передачу.
Например:
[Default.aspx]
<%@ Page Language="C#" Inherits="testWebservice.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head runat="server">
<title>jQuery Web Service call from Mono using JSON</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
function getCar()
{
$.ajax( {
type:'POST',
url:'http://127.0.0.1:8080/ws.asmx/sendCar',
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
success:function(msg) {
AjaxSucceeded(msg);
},
error: AjaxFailed
})
function AjaxSucceeded(result) {
alert(result.d);
}
function AjaxFailed(result) {
alert(result.status + ' ' + result.statusText);
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Button runat="server" id="btnTest" Text="Call WebService" OnClientClick="getCar(); return false;" />
</form>
</body>
</html>
[ws.asmx.cs]
using System;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
namespace testWebservice
{
[ScriptService]
public class ws : System.Web.Services.WebService
{
public ws() {
}
[WebMethod]
public String sendCar()
{
return "44.435006,26.102314";
}
}
}
[web.config]
<?xml version="1.0"?>
<!--
Web.config file for testWebservice.
The settings that can be used in this file are documented at
http://www.mono-project.com/Config_system.web and
http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
-->
<configuration>
<system.web>
<compilation defaultLanguage="C#" debug="true">
<assemblies>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
</compilation>
<customErrors mode="RemoteOnly">
</customErrors>
<authentication mode="None">
</authentication>
<authorization>
<allow users="*" />
</authorization>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpHandlers>
<trace enabled="false" localOnly="true" pageOutput="false" requestLimit="10" traceMode="SortByTime" />
<sessionState mode="InProc" cookieless="false" timeout="20" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
<pages>
</pages>
</system.web>
</configuration>