WebService 因URL意外地以”/…”结束,请求格式无法识别--我的解决方案
问题产生场景:自定义一个Web Service,放到SharePoint站点下。(说明:我开发的不是SharePoint的Web Service,只是一个普通的,因为要在sharepoint站点中使用,所以放在sharepoint站点下面。)
产生的错误:在服务器上面访问时没有问题,但是在客户端的IE访问时有如下的错误:异常信息: 异常类型: InvalidOperationException 异常消息: 因 URL 意外地以“/GetEncryptString”结束,请求格式无法识别。
Web Services方法代码如下:
Code Snippet
- [WebMethod]
- public string GetEncryptString(string userLoginName)
- {
- //Code
- }
js调用代码如下:(使用的是JQuery调用Web Service的方式)
Code Snippet
- $.ajax({
- async: false,
- type: "POST", //访问WebService使用Post方式请求
- url: "/WebService.asmx/GetEncryptString", //调用WebService的地址和方法名称组合---WsURL/方法名
- dataType: 'xml',
- contentType: "text/xml; charset=\"utf-8\"",
- success: function(data) {
- urlParamter=data.text;
- } ,
- error:function(response)
- {
- alert(response.responseTEXT);
- }
- });
解决:
网上的解决方案大部分都是:
要在webservice的 <system.web> 节点下加入
<webServices>
<protocols>
<add name= "HttpPost " />
<add name= "HttpGet " />
</protocols>
</webServices>
当然,我要修改的是sharepoint站点本身的web.config。会不会有什么影响?我不知道,所以尝试其他的解决方案。
参考JQuery调用sharepoint Services的方式
Code Snippet
- var soapEnv =
- "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> ..."
- $.ajax({
- url: "/school/_vti_bin/lists.asmx",
- type: "POST",
- dataType: "xml",
- data: soapEnv,
- complete: processResult,
- contentType: "text/xml; charset=\"utf-8\""
- });
我做了改动,下面是修改之后的内容:
Code Snippet
- var soapEnv="<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
- <soap:Body>
- <GetEncryptString xmlns='http://tempuri.org/'>
- <userLoginName>"+userloginName+"</userLoginName>
- </GetEncryptString>
- </soap:Body>
- </soap:Envelope>";
- $.ajax({
- async: false,
- type: "POST", //访问WebService使用Post方式请求
- url: "/WebService.asmx", //调用WebService的地址和方法名称组合---WsURL/方法名
- dataType: 'xml',
- data: soapEnv,
- contentType: "text/xml; charset=\\cf1 "utf-8\"",
- success: function(data) {
- urlParamter=data.text;
- } ,
- error:function(response)
- {
- alert(response.responseTEXT);
- }
- });
总结:我对于Sharepoint的Web Service机制还没有做深入的了解,可能是限制不安全的自定义的Web Services访问吧。
努力不一定成功,但放弃一定失败!