C# SharePoint ASMX、AJAX
我已经在一个项目上工作了一段时间,该项目将使用JQueryUI自动完成用户名(基于SPWeb.alluser),并将以相同的形式从一个潜在的大列表中分别提取内容。我最初尝试了一个页面方法,但除了整个页面的html之外,无法获得返回(尽管设置了内容类型等),因此我继续尝试通过ASMX返回。结果是500美元。运行Fiddler时出现了完整的ASP错误:“您试图保存或检索的文件已被服务器管理员从该网站阻止。”我相当确定该方法中的代码没有被命中,因为该方法第一行上设置的断点没有被触发 以下是我的web服务:C# SharePoint ASMX、AJAX,c#,jquery,ajax,sharepoint,asmx,C#,Jquery,Ajax,Sharepoint,Asmx,我已经在一个项目上工作了一段时间,该项目将使用JQueryUI自动完成用户名(基于SPWeb.alluser),并将以相同的形式从一个潜在的大列表中分别提取内容。我最初尝试了一个页面方法,但除了整个页面的html之外,无法获得返回(尽管设置了内容类型等),因此我继续尝试通过ASMX返回。结果是500美元。运行Fiddler时出现了完整的ASP错误:“您试图保存或检索的文件已被服务器管理员从该网站阻止。”我相当确定该方法中的代码没有被命中,因为该方法第一行上设置的断点没有被触发 以下是我的web服
[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;
}
}
}
试图设置“UseHttpGet”并发出GET请求也未成功
我在这里发现了一个相关的问题:
我认为这是徒劳的
而且,
这对我来说不起作用,而是得到一个无效web.config的ASP错误
我希望有人以前处理过这个问题,或者看到了我不知道的事情。谢谢你的帮助 事实证明,我忽略了一个关键行为:web服务类和页面方法都无法从用户控件中访问,而我正试图将其作为SharePoint web部件的一部分。因此,也不能从web部件中访问它。我的解决方案是创建一个单独的asmx web服务,并通过说明将其作为场解决方案部署到我的站点。从那以后,我就相对轻松了。那么500人说了些什么呢?编辑过的道歉,在整理我的想法时,这一部分我忘了。谢谢
$.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);
}
});