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 以便我每次都可以轻松调用。

如果您需要更多数据,我可以提供。

非常感谢。

网络配置:

<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。

编辑

为了能够运行您展示给您的代码片段,您需要将您的自定义 Profiler 放置到 HttpContext。

您可以通过两种方式执行此操作,基于每个请求或在应用程序启动时。

对于每个请求,您需要创建一个实现 IHttpModule 的类并将其注册到 web.config 中。

对于应用程序启动,您需要将 CMSProfile 附加到 Application_OnStart 方法中的 HttpContext.Current。

他们是您发布的文章所附的示例应用程序,您是否下载并检查了示例应用程序?

于 2009-11-10T17:04:52.190 回答