首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX SharePoint ASMX

AJAX SharePoint ASMX
EN

Stack Overflow用户
提问于 2014-05-28 18:58:41
回答 1查看 640关注 0票数 0

我已经从事了一段时间的项目,该项目将对用户名使用JQueryUI自动完成(基于SPWeb.AllUsers),并将以相同的形式分别从潜在的大列表中提取内容。我最初尝试了一种页面方法,但是除了整个页面html (尽管设置了内容类型等)之外,无法获得返回,因此我继续通过ASMX尝试它。其结果是一个500。运行Fiddler给出了完整的ASP错误:“服务器管理员阻止了您试图保存或检索的文件。”我相当肯定方法中的代码没有被击中,因为在方法的第一行上设置的断点不会被触发。

这是我的web服务:

代码语言:javascript
复制
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class projectWebService : System.Web.Services.WebService
{
    public class person
    {
        public person(string name, string company)
        {
            this.name = name;
            this.company = company;
        }

        public string name { get; set; }
        public string company { get; set; }
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string getNames()
    {
        try
        {
            //Query list to filter by company and sort by name
            var userQuery = from SPUser user in SPContext.Current.Web.AllUsers
                            orderby user.Name ascending
                            select user;

            List<person> userList = new List<person>();
            foreach (SPUser user in userQuery)
            {
                userList.Add(new person(user.Name, "something"));
            }

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(userList);
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }
}

我试过几种不同的方法,结果也是一样的。下面是AJAX调用:

代码语言:javascript
复制
$.ajax({
        type: 'POST',
        dataType: 'json',
        data: '{}',
        contentType: 'application/json; charset=utf-8',
        url: 'projectWebService.asmx/getNames',
        success: function (msg) {
            alert(msg.toString());
            var people = $.parseJSON(msg);
            $('#projectManager').autocomplete({
                source: people
            });
        },
        error: function (xhr, msg, error) {
            alert(msg.toString());
            alert(error);
        }
    });

试图设置"UseHttpGet“和发出GET请求也没有成功。

我在这里发现了一个相关的问题:这一条提到了一个可能是罪魁祸首的web.config条目。,我把它设置为无效。

另外,本文介绍了其他可能(?)是必需的。 --这对我来说不起作用,而是为无效的web.config获得了一个ASP错误。

我希望有人之前要么不得不处理这件事,要么看到一些我不知道的事情。谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 14:41:49

事实证明,我忽略了一个关键的行为: web服务类和页面方法都无法从用户控件中访问,而我试图将其作为SharePoint web部件的一部分。就这一点而言,它也不能从web部件中访问。我的解决方案是创建一个单独的asmx服务,并通过指令这里将其作为一个场解决方案部署到我的站点。从那里看,它相对来说是无痛的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23919742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档