【问题标题】:Jquery Call to REST self hosted Port numberJquery 调用 REST 自托管端口号
【发布时间】:2012-03-30 05:53:30
【问题描述】:

我只是尝试在 VS 2010 上制作一个解决方案来练习使用 JQuery 使用 REST 服务。 我使用了模板 WCF REST 服务应用程序。它创建了一个我命名为 Services.cs 的类 使用我想调用的方法:

  [WebGet(UriTemplate = "")]
    public List<SampleItem> GetCollection()
    {
        SampleItem item;
        List<SampleItem> lst = new List<SampleItem>();
        for (int i = 0; i < 12; i++)
        {
            item = new SampleItem { Prom = 1960 + i, Name = string.Format("Name {0}", i.ToString()) };
            lst.Add(item);
        }
        return lst;
    }

Global.asax.cs 看起来像: void Application_Start(对象发送者,EventArgs e) { 注册路由(); }

    private void RegisterRoutes()
    {
        // Edit the base address of Service1 by replacing the "Service1" string below
        RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(Service)));
    }

然后我新建了一个 asp.net 空网站,添加了 jquery 文件等。在 default.htm 页面中我喜欢调用 GetCollection,所以我添加了以下 jquery 代码。

    $(function () {
        var serviceUrl = ??????
        $.ajax({
            url: serviceUrl,
            type: 'POST',
            data: '{}',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (colD) {
                var col = colD.d;
            }

        });
    });

我应该放什么网址?特别是我很难弄清楚我的主机本地端口。 我试过http://localhost:5187/KendoRestService/GetCollection,其中 KendoRestService 是 REST 项目的名称,以及 service.cs 上的命名空间。任何帮助将不胜感激。

【问题讨论】:

    标签: jquery wcf-rest


    【解决方案1】:

    我相信你想给 [WebGet(UriTemplate = "")] 一个值,即 [WebGet(UriTemplate = "getCollection")]

    那么 javascript url 将是:

    var serviceUrl = ServiceName/UriTemplate
    

    所以在你的情况下:

    var serviceUrl = '/getCollection';
    

    【讨论】:

    • 不,它没有用。我在 getCollection 上放了一个尖点,但它永远不会去那里,也不会出现在 ajax 调用的成功部分。我的解决方案中有 2 个项目。
    • 您是否尝试过更改参数 typeof(Service) 以指向 GetCollection() 所在的 dll?
    • 不在 js 中。您的问题听起来与路由有关。您从 ajax 请求中得到什么样的错误?更改在 global.asax 文件中:RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(Service)));
    • 贾斯汀,我在我的 ajax 调用中添加了错误处理:error: function (xhr, ajaxOptions, throwedError) { alert(xhr.status);警报(抛出错误); xhr.status = 0,并且 throwedError='';我的问题是我不知道在哪里初始化的端口号。您的解决方案无法工作,因为我的服务位于另一个项目中并且 /getCollection 找不到。不管怎么说,还是要谢谢你。其他谁已经对 REST WCF 做过 jquery 了?
    • 除非您的项目位于不同的端口上,否则它将工作。您的其他项目是否构建为单独的 dll?
    【解决方案2】:

    好的,我找到了端口号。检查服务项目的属性 Alt+Enter,Web 选项卡,在服务器下检查将服务器设置应用于所有用户,并使用 Visual Studio 开发服务器,自动分配端口。特定端口选项前面有一个端口号。 Visual Studio 将使用此端口号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多