无法将简单控制器访问为webService

本文关键字:访问 webService 控制器 简单 | 更新日期: 2023-09-27 18:26:55

调试时,我验证了这个js函数被调用:

var oAuthManager = {
    loginWithGoogle_OnClick: function () {
        createAjaxRequest("Register/GetAuthorizeRequestToken", {
                    'providerType': 'google'}).done(function (res) { });
//        createAjaxRequest("Register", null).done(function (res) { });
    }
};

它调用:

function createAjaxRequest(url,data) {
    return $.ajax(
            {
                type: "POST",
                url: url,
                data: data
            });
        };

那么,为什么我不能使用RegisterController的方法呢?

 [HttpPost] ''tried with and without this
public void GetAuthorizeRequestToken(string providerType)
{
    var authType = (OAuthProviderTypes)Enum.Parse(typeof(OAuthProviderTypes), providerType);
    mAuthorizationService.GetAuthorizeRequestToken(authType);
}

其他控制器与其他js配合良好。

我得到错误:

POST http://localhost:8976/Register/GetAuthorizeRequestToken 500 (Internal Server Error)

我有两个断点:

  • 一个在ctor中,停止OK

  • webMethod开头的第二个。我看到那根线永远不会到达那里。

无法将简单控制器访问为webService

Elad,

我能够一行一行地复制你的代码,并且正在工作。所以让我们来分析一下这个问题。

您没有得到404(未找到)或403(请求被拒绝)。。。您得到一个500的错误,这意味着应用程序在某个地方坏了。

因此,我将开始调查其中的一些要点:

  • 您的控制器是否继承自基类?初始化步骤是否失败
  • 在您的服务电话中设置一个断点。也许VS的表现很糟糕,没有按照应该的方式停止行动

如果你一无所获,我也会尝试以下方法来隔离问题:

  • 用Fiddler击球
  • 让js调用更简单,看看你是否能达到动作(例如,在没有数据的情况下发布)
  • 在ajax调用中包含一个数据类型(不过在没有它的情况下对我有用)

这应该是一个好的开始,我希望它能有所帮助,

-covo