【问题标题】:How can I create a user for ASP.Net/Umbraco SQL Membership from iPhone and WCF?如何从 iPhone 和 WCF 为 ASP.Net/Umbraco SQL Membership 创建用户?
【发布时间】:2011-07-03 05:21:36
【问题描述】:

所以我这几天一直在苦苦挣扎,试图简单地使用 Umbraco 的 Membership Provider 创建一个具有 WCF 服务的新用户。有人可以告诉我我是不是疯了,如果这是不可能的,或者如果我忽略了一些我需要添加到我的 WCF 服务以允许它工作的东西。我的 WCF 脚本使用 .NET Framework 4.0 嵌入到我在 IIS 7.5 上的网站中。

我目前可以从 WCF 返回我的 JSON 字符串,例如输入验证。我将从 iPhone 应用程序中使用它。

但是一旦一切都验证了,我会尝试运行以下几行......

  MembershipCreateStatus status;    
  MembershipUser newUser = Membership.CreateUser(email, pw1, email, "n", "n", false, out status);

  if (newUser != null)
  {
    string newUserGuid = System.Guid.NewGuid().ToString("N");
    MemberProfile mp = MemberProfile.GetUserProfile(email);
    mp.AuthGuid = newUserGuid;
    mp.FirstName = fname;
    mp.LastName = lname;
    mp.Birthday = bDay;
    mp.DisplayRealName = intName;
    mp.DisplayBirthday = intBirthday;
    mp.Save();
    Roles.AddUserToRole(email, "Client");
    return @"Valid:User Added";
  }else
    return @"Error:Invalid:Error Occurred";
  }

我收到以下错误...

服务器在处理请求时遇到错误。异常消息是“对象引用未设置为对象的实例。”。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪是:

在 umbraco.cms.businesslogic.member.Member.GetMemberFromLoginName(字符串 登录名)在 umbraco.providers.members.UmbracoMembershipProvider.CreateUser(字符串 用户名,字符串密码,字符串 电子邮件,字符串密码问题,字符串 passwordAnswer, Boolean isApproved, 对象提供者UserKey, MembershipCreateStatus& 状态)在 System.Web.Security.Membership.CreateUser(字符串 用户名,字符串密码,字符串 电子邮件,字符串密码问题,字符串 passwordAnswer, Boolean isApproved, 对象提供者UserKey, MembershipCreateStatus& 状态)在 System.Web.Security.Membership.CreateUser(字符串 用户名,字符串密码,字符串 电子邮件,字符串密码问题,字符串 passwordAnswer, Boolean isApproved, MembershipCreateStatus& 状态)在 MyDll.Web.AUsers.RegisterUser(字符串 电子邮件,字符串 pw1,字符串 pw2,字符串 fname,字符串 lname,Int32 intName, 字符串生日,Int32 intBirthday) 在 MyDll.Web.get.Users.Register(字符串 电子邮件,字符串 p1,字符串 p2,字符串 fname,字符串 lname,字符串 显示名称,字符串生日,字符串 展示出生)在 SyncInvokeRegister(对象,对象[], 对象[] ) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象 实例,Object[] 输入,Object[]& 输出)在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.MessageRpc.Process(布尔 isOperationContextSet)

我的 Web Config 部分如下所示...

<system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="jsonBinding" maxReceivedMessageSize="2147483647">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="MyDll.Users">
        <endpoint address="/get/Users.svc" behaviorConfiguration="jsonBehavior"
          binding="webHttpBinding" bindingConfiguration="jsonBinding"
          name="UsersService" contract="MyDll.Web.get.Users" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="jsonBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment
      multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

任何帮助将不胜感激。如果我能给你买一瓶或 10 瓶啤酒,我会的。 谢谢!

【问题讨论】:

  • 好的,所以我将其缩小到以下错误原因...code Membership.CreateUser(email, pw1, email, "n", "n", false, out status);code 但它仍然无法正常工作:(我删除了codeMembershipUser newUser = code,所以现在我只依赖code MembershipCreateStatus status;code 来确定它是否成功或不是。
  • 大家,我在这里做点什么...我不认为我想要在上面做的事情是可能的,没有 509 证书和所有那些垃圾。我实际上正在编写代码和存储过程来为我处理将整个会员插入 Umbraco 的工作。将让每个人都了解我的发现。

标签: iphone wcf asp.net-membership umbraco sqlmembershipprovider


【解决方案1】:

在umbraco Member.cs中,有

HttpContext.Current.Trace.Warn("No member with loginname: " + loginName + " Exists");

所以你得到了这样的错误。

在system.serviceModel下的web.config中添加:

<serviceHostingEnvironment aspNetCompatibilityEnabled=”true”/>

关于你的服务类

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/aa702682.aspx

http://our.umbraco.org/forum/developers/api-questions/18465-Access-Umbraco-Content-from-WCF-Service

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多