ASP.NET登录视图混乱

ASP.NET登录视图混乱,asp.net,visual-studio-2010,web-config,loginview,Asp.net,Visual Studio 2010,Web Config,Loginview,我们有一个网页,它是由一位前员工在VisualStudio2008中创建的,允许访问者登录 最近,我们的一位营销人员上了一堂网页设计课。在课堂上,此人制作了一个漂亮的网站,作为VisualStudio2010课堂项目的一部分 现在它已经被甩在我身上,我不知道现有的网站是如何工作的。我有两种风格的VisualStudio,所以这不是问题 现在,我正在尝试了解我们以前的web设计器是如何实现该控件的 不知何故,Web.config文件中的条目会影响LoginView控件对帐户进行身份验证的位置 为了

我们有一个网页,它是由一位前员工在VisualStudio2008中创建的,允许访问者登录

最近,我们的一位营销人员上了一堂网页设计课。在课堂上,此人制作了一个漂亮的网站,作为VisualStudio2010课堂项目的一部分

现在它已经被甩在我身上,我不知道现有的网站是如何工作的。我有两种风格的VisualStudio,所以这不是问题

现在,我正在尝试了解我们以前的web设计器是如何实现该控件的

不知何故,
Web.config
文件中的条目会影响
LoginView
控件对帐户进行身份验证的位置

为了使代码尽可能简短和“切中要害”,我将尽可能删去看起来不必要的内容

我们的
Web.config
文件包含以下条目:

<configuration>
  <system.web>
    <membership defaultProvider="CustomizedProvider">
      <providers>
        <clear/>
          <add name="CustomizedProvider" type="System.Web.Security.SqlMembershipProvider" requiresUniqueEmail="false" connectionStringName="SqlASPNETDB" applicationName="JP2CODE" enablePasswordRetrieval="True" enablePasswordReset="True" passwordFormat="Clear" requiresQuestionAndAnswer="False" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0"/>
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="ProfileProvider" applicationName="JP2CODE" connectionStringName="SqlASPNETDB" type="System.Web.Profile.SqlProfileProvider"/>
      </providers>
    </profile>
    <roleManager enabled="true" defaultProvider="CustomRoleProvider">
      <providers>
        <clear/>
        <add connectionStringName="SqlASPNETDB" applicationName="JP2CODE" name="CustomRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </providers>
    </roleManager>
    <webParts>
      <personalization defaultProvider="SqlPersonalizationProvider">
        <providers>
          <add name="SqlPersonalizationProvider" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" connectionStringName="SqlASPNETDB" applicationName="JP2CODE"/>
        </providers>
        <authorization>
          <allow verbs="enterSharedScope" users="test,?"/>
        </authorization>
      </personalization>
    </webParts>
  </system.web>
</configuration>
我不确定什么是
ValidationGroup=“ctl00$Login1”
,或者我是否可以在新版本中使用它

在营销部提供给我的原型母版页中,登录例程非常不同。我不知道如何使它工作,或者如果营销人员插入的东西将不起作用。它更分散一些:

<div style="width:181px;">
  <asp:LoginName ID="LoginName1" runat="server" FormatString="Welcome {0}!" />
  <asp:LoginView ID="LoginView2" runat="server">
    <LoggedInTemplate>
      <asp:LinkButton ID="LinkButton1" Font-Underline="true" PostBackUrl="~/ManageProfile.aspx" runat="server">Manage Profile</asp:LinkButton>
    </LoggedInTemplate>
  </asp:LoginView>
      <asp:LoginStatus ID="LoginStatus1" Font-Underline="true"  LoginText=""  LogoutAction="Refresh" runat="server" />
</div>
<h3>Log In</h3>
<asp:LoginView ID="LoginView1" runat="server">
  <AnonymousTemplate>
    <asp:Login ID="Login1" BackColor="#E7E0C5" Width="170px" VisibleWhenLoggedIn="false"
      runat="server" FailureText='Invalid UserName/Password.' >
    </asp:Login>
  </AnonymousTemplate>
  <LoggedInTemplate>
    Welcome <asp:LoginName ID="LoginName1" runat="server" /><br /><br />
    <asp:LoginStatus ID="LoginStatus1" runat="server" /><br />
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/ManageProfile.aspx">Manage Profile</asp:HyperLink>
  </LoggedInTemplate>
</asp:LoginView>

管理配置文件
登录
欢迎光临


管理配置文件

这个新版本有一些不同的字段。我是否实现了这些控件,或者这些控件是在不使用自定义登录时使用的默认控件?

您的任务是将现有站点(asp.net 3.5)替换为新站点(可能是asp.net 4.0)

不幸的是,说起来容易做起来难。假设新应用程序不是高度解耦的,您将不得不进行一些重构以使其正常工作。重构的数量取决于新站点的开发人员如何实现数据访问等

你应该做什么:

此时,您应该将重点放在将新应用程序指向存储成员资格和配置文件提供程序的服务器上,然后再进行身份验证

当你通过测试后,你就可以在你的盒子上做一些很好的集成测试来发现问题并开始解决它们

您问题的答案:

那么,我是否要将这个Web.config文件信息直接复制到新项目中

我不推荐。非常小心地将每个元素从原始元素复制到新元素。您应该主要关注的是
连接字符串
身份验证
成员资格
配置文件
提供者元素。这些是你想从旧的移植到新的。不过,可能还有其他一些——从这些开始

如果更改applicationName,是否需要创建新的PublicKeyToken

不要更改应用程序名称。您的成员资格提供程序在数据库中使用它。如果在配置文件中更改它,则需要在数据库中更改它

我不确定ValidationGroup=“ctl00$Login1”是什么,或者我是否可以在新版本中使用它

现在不必担心这个问题,只需使用新应用程序的实现(因为它太棒了!)

这个新版本有一些不同的字段。我是否实现了这些控件,或者这些控件是在不使用自定义登录时使用的默认控件

较新版本中的登录控件在用户登录后显示用户名及其状态。登录控件具有模板,可为匿名用户(未登录的用户)和登录的用户呈现不同的布局。看起来它们有两组,指向同一页。一个可能是在服务器上执行一些不同的代码,具体取决于单击了哪个管理概要文件链接

现在就把它们留在原地

这篇文章的链接可能会帮助你解决一些问题


希望这有所帮助。

原型是否提供了原始应用程序没有的新功能?将帮助您了解是否有必要将应用程序移植到4.0(Visual Studio 2010-默认asp.net framework)。我被告知要使营销版本正常工作,然后将其交还给他们,以便他们能够维护该版本或进行任何更改。所以,我猜它需要保持VS2010格式。登录脚本由/my IT部门控制,因此需要保留旧的逻辑。我回答你的问题了吗?没有,但没关系。让我回答你的问题,看看我能否提供一些补充信息。答案有用吗?如果是这样,我很乐意接受accept=pHi-Rich,这可能是答案,但我还没有完全完成Microsoft演练。如果通过他们的演练教我如何将
LoginView
控件连接到
Web.config
文件中所需的任何内容以使其正常工作,那么我会将此标记为答案。与此同时,我被拉到了另一个项目。这可能需要几天或一周的时间,但我总是在我的问题上标出答案。是的,我想这就是我想要的。尽管如此,仍有很多工作要做,需要做出改变。
<div style="width:181px;">
  <asp:LoginName ID="LoginName1" runat="server" FormatString="Welcome {0}!" />
  <asp:LoginView ID="LoginView2" runat="server">
    <LoggedInTemplate>
      <asp:LinkButton ID="LinkButton1" Font-Underline="true" PostBackUrl="~/ManageProfile.aspx" runat="server">Manage Profile</asp:LinkButton>
    </LoggedInTemplate>
  </asp:LoginView>
      <asp:LoginStatus ID="LoginStatus1" Font-Underline="true"  LoginText=""  LogoutAction="Refresh" runat="server" />
</div>
<h3>Log In</h3>
<asp:LoginView ID="LoginView1" runat="server">
  <AnonymousTemplate>
    <asp:Login ID="Login1" BackColor="#E7E0C5" Width="170px" VisibleWhenLoggedIn="false"
      runat="server" FailureText='Invalid UserName/Password.' >
    </asp:Login>
  </AnonymousTemplate>
  <LoggedInTemplate>
    Welcome <asp:LoginName ID="LoginName1" runat="server" /><br /><br />
    <asp:LoginStatus ID="LoginStatus1" runat="server" /><br />
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/ManageProfile.aspx">Manage Profile</asp:HyperLink>
  </LoggedInTemplate>
</asp:LoginView>