无法访问简单的控制器作为Web服务

时间:2012-03-04 21:39:41

标签: c# javascript asp.net-mvc

调试时我验证了这个js func被称为:

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);
}

其他控制器与其他控制器配合使用。

我收到错误:

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

我有两个断点:

  • ctor中的一个停止OK

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

1 个答案:

答案 0 :(得分:0)

埃拉德,

我能够逐行重现你的代码并且正在工作。那么让我们分析一下这个问题。

你没有得到404(找不到,或403(请求被拒绝)......你得到500错误,这意味着应用程序在某个地方破了。

所以我会开始研究其中的一些观点:

  • 您的控制器是否继承自基类?是否有初始化步骤失败?
  • 在服务电话中放置一个断点。也许VS的行为很糟糕,并没有停止在Action上。

如果您什么都没找到,我也会尝试以下方法来解决问题:

  • 点击Fiddler的行动
  • 让js调用更简单,看看是否可以进行操作(例如,没有数据的帖子)
  • 在你的ajax调用中包含一个数据类型(虽然没有它,但对我有用)

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

-covo