3

そのため、Umbraco のメンバーシップ プロバイダーを使用して、WCF サービスで新しいユーザーを簡単に作成しようとして、何日も苦労しています。私が頭がおかしいのか、これが不可能なのか、またはこれを機能させるためにWCFサービスに追加する必要があるものを見落としているのか、誰かに教えてもらえますか. 私の WCF スクリプトは、.NET Framework 4.0 を使用して IIS 7.5 上の私の Web サイトに埋め込まれています。

現在、入力の検証など、JSON 文字列を WCF から返すことができます。そして、これを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) at 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 (文字列ユーザー名、文字列パスワード、文字列電子メール、文字列 passwordQuestion、文字列 passwordAnswer、ブール値 isApproved、オブジェクト providerUserKey、MembershipCreateStatus& ステータス) で System.Web.Security.Membership.CreateUser (文字列ユーザー名、 MyDll.Web.AUsers.RegisterUser(文字列メール、文字列 pw1、文字列 pw2、文字列 fname、文字列 lname、Int32 intName、文字列birthdate、Int32 intBirthday) MyDll.Web.get.Users.Register(文字列 email、文字列 p1、文字列 p2、文字列 fname、文字列 lname、文字列 displayname、文字列 birthdaydate、文字列 displaybirth) System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object インスタンス、Object[] 入力、Object[]& 出力) で SyncInvokeRegister(Object , Object[] , Object[] ) System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) で System.ServiceModel.System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) の Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(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(Boolean isOperationContextSet) でSystem.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) の 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.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>

どんな助けでも大歓迎です。ビールを 1 杯か 10 杯買えるなら、そうします。ありがとう!

4

1 に答える 1

2

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

于 2011-03-31T08:14:50.437 に答える