0

私は現在、数日前に自分のサイトにプロファイル プロバイダーを実装しようとしていますが、それに取り組むのに苦労しています。私は php プログラマーで、最近 asp.net に移行したばかりです。

Linq to sql を使用して、このhttp://www.codeproject.com/KB/aspnet/LINQCustomProfileProvider.aspxチュートリアルに従ってください。

asp.netのデフォルトとは異なる構造を持っているため、自分のものを使用している理由。プロファイル データは、ユーザー テーブル内にあります。

コンパイルは問題なく、ログインも問題ありませんでした。

しかし、私は試しました

<% CMSProfile profile = HttpContext.Current.Profile as CMSProfile;%>
<%= profile.NickName %>

それは機能せず、System.NullReferenceException がスローされます... では、プロファイルを HTTPCONtext に自動的に取得して、毎回簡単に呼び出せるようにするにはどうすればよいでしょうか。

さらにデータが必要な場合は、提供できます。

どうもありがとうございました。

Web.config:

<roleManager enabled="false" defaultProvider="CMSRoleProvider">
  <providers>
    <clear />
    <add name="CMSRoleProvider" type="P014.ProviderClass.CMSRoleProvider" connectionStringName="P014ConnectionString" applicationName="/" />
  </providers>
</roleManager>
4

2 に答える 2

2

プロバイダーを web.config にどのように登録しましたか? プロバイダーを自分でインスタンス化する必要はありません。起動時にアプリで実行する必要があります。より多くの情報を提供していただければ、私がお手伝いできるかもしれません。

編集:これが私のweb.configです。おそらくそれはあなたに役立つでしょう。

<profile defaultProvider="SWIntranetProfile" enabled="true">
    <providers>
        <clear/>
        <add name="SWIntranetProfile" type="SWIntranetProfile"/>
    </providers>
    <properties>
        <clear/>
        <!-- SID is really LOGON_USER -->
        <add name="SID" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="PersonID" allowAnonymous="false" type="System.Int32" readOnly="true"/>
        <add name="EmailAddress" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="Position" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="Name" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="FirstName" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="LastName" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="ImageName" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="PhoneExt" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="LastIP" allowAnonymous="false" type="System.String" readOnly="false"/>
        <add name="IntranetTheme" allowAnonymous="false" type="System.String" readOnly="false"/>
        <add name="UnionID" allowAnonymous="false" type="System.Int32" readOnly="true"/>
        <add name="UnionName" allowAnonymous="false" type="System.String" readOnly="true"/>
        <add name="OfficeID" allowAnonymous="false" type="System.Int32" readOnly="true"/>
    </properties>
</profile>
于 2009-11-10T16:10:14.950 に答える
1

この記事の著者が、プロファイラーまたはワークフローを HttpContext にバインドするためのコード サンプルを提供していないことに気付きました。

これを行うために独自のクラスを作成しましたか? もしそうなら、これを web.config で正しく設定しましたか?

IIS7 を使用している場合は、web.config ファイルの webServer セクションに IHttpModule を登録する必要もあります。

編集

示したコード スニペットを実行できるようにするには、カスタム プロファイラーを HttpContext に配置する必要があります。

これは、リクエストごとに行うか、アプリケーションの開始時に行うかの 2 つの方法で行うことができます。

要求ごとに、IHttpModule を実装するクラスを作成し、web.config に登録する必要があります。

アプリケーションを開始するには、Application_OnStart メソッドで CMSProfile を HttpContext.Current にアタッチする必要があります。

投稿記事に添付されていたサンプルアプリですが、サンプルアプリをダウンロードして確認しましたか?

于 2009-11-10T17:04:52.190 に答える