所以我这几天一直在苦苦挣扎,试图简单地使用 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(String loginName) 在 umbraco.providers.members.UmbracoMembershipProvider.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status ) 在 System.Web.Security.Membership.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status) 在 System.Web.Security.Membership.CreateUser(String username, MyDll.Web.AUsers.RegisterUser(字符串电子邮件,字符串 pw1,字符串 pw2,MyDll.Web.get.Users.Register 中的字符串 fname、字符串 lname、Int32 intName、字符串生日、Int32 intBirthday)(字符串电子邮件、字符串 p1、字符串 p2、字符串 fname、字符串 lname、字符串显示名称、字符串生日、字符串显示出生)在 SyncInvokeRegister(Object , Object[] , Object[] ) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, 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.MessageRpc.Process(Boolean isOperationContextSet) 的 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean 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 瓶啤酒,我会的。谢谢!