如何创建跨域asp.net Web服务

时间:2012-09-03 07:37:19

标签: asp.net ajax web-services cross-domain

我创建了一个Web服务。我想使用Ajax jQuery访问此Web服务。我可以在同一个域上访问。但我想从其他域访问此Web服务。

有谁知道如何在asp.net中创建跨域Web服务? web.config文件中的任何设置,以便我从其他域访问它?

我的网络服务

[WebService(Namespace = "http://tempuri.org/")]
[System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
    public Service () {
    }

    [WebMethod]
    public string SetName(string name) {
        return "hello my dear friend " + name;

    }
}

的JavaScript

$.ajax({
    type: "GET",
    url:'http://192.168.1.119/Service/SetName.asmx?name=pr',
    ContentType: "application/x-www-form-urlencoded",
    cache: false,
    dataType: "jsonp",
    success: onSuccess
});

2 个答案:

答案 0 :(得分:0)

安装nuget,然后尝试这些     以下是nuget图库中Json.Net的链接:nuget.org/packages/Newtonsoft.Json

using Json;
using Newtonsoft.Json;
using System.Xml.Serialization;


     [WebService(Namespace = "http://tempuri.org/")] 
        [System.Web.Script.Services.ScriptService] 
        public class Service : System.Web.Services.WebService 
        { 
            public Service () { 
            } 

            [WebMethod] 
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
            public string SetName(string name) { 
         return JsonConvert.SerializeObject("hello my dear friend " + name, Newtonsoft.Json.Formatting.Indented);

            } 
        } 

答案 1 :(得分:0)

使用jQuery的jsonp数据类型确实是一个不错的选择,因为它可以使跨域脚本编写成为可能......但由于这是json-with-padding,你必须确保你的webservice返回json ..

请点击此处查看一个好的启动器:http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/