私はこのサイトを初めて利用し、過去に何度もオンラインで調査したことがあり、この問題を解決できませんでした。基本的に、ユーザーが許可されておらず、Windows認証方式を使用している場合は、メニュー項目を非表示にします。このコードに関する私の問題は、私が管理者の役割を果たしているにもかかわらず、「管理者」というメニュー項目が非表示になっていることです。基本的に、Adminというフォルダーの下にAdmin.aspxというファイルがあります。Adminフォルダーには、Web構成があり、次のように構成しました。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="~/Admin/Authors.aspx"></location>
<system.web>
<authorization>
<deny users="?" />
<allow users="Perf_Mon" />
<allow roles="Perf_Mon" />
</authorization>
</system.web>
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Deny" users="?" />
<add accessType="Allow" roles="Admin" />
</authorization>
</security>
</system.webServer>
</configuration>
すべてのメニューがマスターページファイルにあり、コードがここにあるため、マスターページファイルのコードビハインドも使用しています。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not Roles.IsUserInRole("Admin") Then
Dim menuItems As MenuItemCollection = NavigationMenu.Items
Dim adminItem As New MenuItem()
For Each menuItem As MenuItem In menuItems
If menuItem.Text = "Admin" Then
adminItem = menuItem
End If
Next
menuItems.Remove(adminItem)
End If
End Sub
そのため、管理者の役割を果たしているのに、なぜ管理者メニューが非表示になっているのか疑問に思っています。何が間違っているのかわかりません。ありがとうマスターページのASPファイルは次のとおりです
<body>
<form id="Form1" runat="server">
<div class="page">
<div class="header">
<div class="title">
<h1>
Home Page
</h1>
</div>
<div class="loginDisplay">
<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
<AnonymousTemplate>
[ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a>
]
</AnonymousTemplate>
<LoggedInTemplate>
Welcome <span class="bold">
<asp:LoginName ID="HeadLoginName" runat="server" />
</span>! [
<asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out"
LogoutPageUrl="~/" />
]
</LoggedInTemplate>
</asp:LoginView>
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Admin/Authors.aspx" Text="Admin" />
<asp:MenuItem NavigateUrl="~/Users/MyTest1.aspx" Text="Summary" />
<asp:MenuItem NavigateUrl="~/Users/MyTest2.aspx" Text="Details" />
</Items>
</asp:Menu>
</div>
</div>
<div class="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
</form>
</body>
この行のマスターページを参照しているので、サイトマップを参照するように変更するにはどうすればよいですか?
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" MaintainScrollPositionOnPostback="true" CodeFile="Authors.aspx.cs" Inherits="Admin_Authors1" %>