微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – 使用jquery调用webmethod时始终获得“401 Unauthorized”错误

我一直在努力让我的 jquery调用webmethod工作.我被服务器以“401 Unauthorized”响应退回.我必须在web.config或其他阻止成功调用的地方设置不正确.

非常感谢您的见解!

调用js函数调用jquery调用

button.OnClickAction = "PageMethod('TestWithParams',['a','value','b',2],'AjaxSucceeded','AjaxFailed'); return false;";

调用jquery的JavaScript函数

function PageMethod(fn,paramArray,successFn,errorFn) {
var pagePath = window.location.pathname;
var urlPath = pagePath + "/" + fn;

//Create list of parameters in the form:  
//{"paramName1":"paramValue1","paramName2":"paramValue2"}  
var paramList = '';
if (paramArray.length > 0) {
    for (var i = 0; i < paramArray.length; i += 2) {
        if (paramList.length > 0) paramList += ',';
        paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1] + '"';
    }
}
paramList = '{' + paramList + '}';

//Call the page method
$.ajax({
    type: "POST",url: pagePath + "/" + fn,contentType: "application/json; charset=utf-8",data: paramList,timeout: 10000,dataType: "json",success: function(result) { alert('Overjoyed'); },error: function(result) { alert('No joy'); }
});
}

页面中的Web方法

public partial class WebLayout : System.Web.UI.Page
{

    [WebMethod()]
    public static int Testnoparams()
    {
        return 1;
    }

    [WebMethod()]
    public static string TestWithParams(string a,int b)
    {
        return a + b.ToString();
    }
...

在Firebug控制台中看到的响应

json: {"Message":"Authentication Failed.","StackTrace":null,"ExceptionType":"system.invalidOperationException"}

"NetworkError: 401 Unauthorized - http://localhost/Care-Provider-Home/Profile/Personal-Profile.aspx/TestWithParams" TestWithParams

我查看并阅读了关于这个主题的常用网站(Encosia等),但是有用.要么我错过了一个关键部分,要么我的环境的安全参数中存在一些阻止呼叫的微妙之处.

以下是一些可能影响您诊断的潜在有用信息:

>代码隐藏中的Web方法
>使用Sitecore CMS(似乎没有干涉,永远不知道)
> IIS7
> .NET 3.5
> jQuery 1.3.2

我期待着您的见解和指导 – 谢谢!

解决方法

是的,它确实起作用了!由于Sitecore CMS确实执行URL重写以生成友好的URL(它以层的形式组装页面,动态地,类似于Master Page概念),因此我发现它可能导致一些问题,最初导致401错误.我通过使用单个ASPX创建一个单独的项目来验证这一点 – 通过一些工作,我可以调用Web方法并使用jquery获取值.然后我在我的web根目录中创建了几乎相同的ASPX,但是在发出请求时告诉Sitecore忽略它(web.config中的IgnoreUrlPrefixes),经过一些工作我也能让它成功运行!谢谢你的帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
Some samples are below for ASP.Net web form controls:(from http://www.visualize.uk.com/resources/asp
问题描述: 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。 For columns not defined as System.String, the only vali
最近用到了CalendarExtender,结果不知道为什么发生了错位,如图在Google和百度上找了很久,中文的文章里面似乎只提到了如何本地化(就是显示中文的月份)以及怎么解决被下拉框挡住的问题,谈
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence changed a lot since 1.1. Here is the order: App
静态声明: &#39; Style=&quot;position: relative&quot; AppendDataBoundItems=&quot;True&quot;&gt; (无 或 空 或
以下内容是从网络上搜集资料,然后整理而来的。不当之处,请不吝指教。(The following were from network, and edited by myself. Thanks in a
Imports System Imports System.Reflection Namespace DotNetNuke &#39;*********************************
Ok so you have all seen them: “8 million tools for web development”, “5 gagillion tools that if you