用户通过ASP.NET MVC应用程序内的ASMX服务登录

时间:2018-02-12 19:51:11

标签: asp.net asp.net-mvc web soap asp.net-identity

我是网络开发的新手,我正在尝试实现一个包含两个部分的Web应用程序:

  1. 使用ASP.NET MVC 5的WebApp前端,用户可以在其中管理数据并配置要存储在SQL Server数据库中的某些项目
  2. ASMX基于SOAP的服务,为了执行用户在数据库中配置的各种操作而调用该服务。不幸的是,这需要保持SOAP服务,因为它处理第三方框架。
  3. 我对MVC越来越熟悉,但网络服务方面却让我失望。

    目前,我正在WebApp前端使用模板MVC项目中的ASP.NET Identity(带有一些额外的用户属性),以允许用户创建帐户并管理数据。这个前端界面运行良好。

    我遇到的问题是尝试通过SOAP ASMX服务对用户进行身份验证时。

    例如:

    [WebMethod]
    public string[] authenticate(string strUserName, string strPassword)
    {
        var result = await HttpContext.Current.GetOwinContext().Get<ApplicationSignInManager>().PasswordSignInAsync(strUserName, strPassword, false, false);
    
        if (result == SignInStatus.Success)
        {
            // Do something useful
        }
    }
    

    在登录行,执行只是停止并返回。没有调试信息,也没有异常。老实说,我还没有完全掌握ASP.NET身份,也没有在MVC应用程序中提供模板,我正在慢慢学习。

    从服务角度来看,如果用户成功登录,则会调用其他WebMethods来访问SQL Server数据库并访问用户已配置的特定操作。

    或者,是否有更好的方法在MVC应用程序中实现此SOAP Web服务?在我看来,Web API仅支持RESTful约定,因此在我的情况下不起作用。

1 个答案:

答案 0 :(得分:0)

我能够弄明白我的问题。事实证明特定的服务方法不能与异步一起使用,因此当我调用我的异步方法时,它将返回一个空白结果,从而隐藏实际发生的事情。在这种情况下,将调用切换为同步解决了问题。