• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

کنترل SiteMapDataSource و استفاده از دو نقشه سایت

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
برای سایت دو زبانه لازمه که دوتا نقشه سایت ایجاد بشه و همین طور از دو کنترل Menu در صفحات مختلف استفاده بشه. یکی فارسی و دیگری انگلیسی. هر کنترل منو به یه SiteMapDataSource می تونه مقید بشه در حالی که گویا تمام SiteMapDataSource ها فقط از فایل web.sitemap اطلاعاتشون رو میگیرن. راهی هست برای اینکه از دو تا از این فایل ها اطلاعات بگیرن.

و دوم اینکه جایی خوندم که اگه قرار بشه در بخش ناوبری لینک یک سری از صفحات فقط برای نقش های خاصی نشون داده بشه می شه در فایل web.sitemap از کدی مثل زیر استفاده کرد.

کد:
<siteMapNode title="Home" url="~/Default.aspx" description="Home" roles="Admin">

اینجوری فقط برای ادمین نمایش داده میشه. من استفاده کردم از این کد ولی کار نکرد.
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
سوال اول:

شما میتونی 2 تا سایت xml بسازی و به صورت داینامیک تو خود کد برنامه، برای دیتاسورس، فایل رو انتخاب کنید

سوال دوم:
اون نام کاربری نیست، منظور admin role هست ، برای تست باید شما از role استفاده کرده باشی تو سایت
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
منم منظورم همون role بود. الان من می خوام یه سری صفحات فقط برای role ی که اسمش admin هست معلوم باشه. کافیه که همون کدی که تو پست اولم زدم رو بزارم ؟ رو لوکال می تونم تست کنم چون تست کردم و جواب نداد.
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
برای استفاده از role ، شما باید ابتدا از membership provider استفاده کنید، و بعد از role manager
ساختار authentications شما به چه صورت هست ؟
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
برای استفاده از role ، شما باید ابتدا از membership provider استفاده کنید، و بعد از role manager
ساختار authentications شما به چه صورت هست ؟

فکر می کنم که اطلاعات membership رو تو یه فایل جداگانه mdf ذخیره کرد. میشه یه توضیح در مورد membership provider و role manager بدین. من از web configuration برنامه visual studio استفاده کردم و در اون رول ها رو بوجود آوردم. البته رول ها تو صفحه هایی که login براش گذاشتم کار می کنه. البته سوال بعدیم هم اینه که اطلاعات membership رو چجوری تو همون دیتابیس یکپارچه سایت قرار بدم.
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
ببینین provider ها در asp.net یه جورایی برنامه های از قبل نوشته شده برا شما هستند بر روی الگو ها و اصول برنامه نویسی، و حالا شما میتونین بدون اینکه کاری به سیستم کارشون داشته باشید، فقط از قابلیتهاشون استفاده کنید

membership provider مسایل مربوط به امنیت سایت و اعتبار سنجی ها به کار میره
تمامی کنترل های بخش LOGIN در visual studio ، به صورت پیشفرض فقط وقتی کار میکنن که شما از این provider استفاده کرده باشی،

کد فایل web.config رو بیار اینجا، ببینیم اشکال از کجاست
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
کد:
<?xml version="1.0"?>
<!-- 
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use
    the Website->Asp.Net Configuration option in Visual Studio.
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
-->
<configuration>
    <configSections>
        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
                    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                    <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                </sectionGroup>
            </sectionGroup>
        </sectionGroup>
    </configSections>
    <appSettings/>
  <connectionStrings>
    <add name="GTL" connectionString="Server=localhost\SqlExpress; AttachDbFilename=|DataDirectory|GTL.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <location path="images">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>
  <location path="Portal">
    <system.web>
      <authorization>
        <allow roles="Administrators" />
        <allow roles="Users" />
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
  <location path="Admin">
    <system.web>
      <authorization>
        <allow roles="Administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
    <system.web>
        <!-- 
            Set compilation debug="true" to insert debugging 
            symbols into the compiled page. Because this 
            affects performance, set this value to true only 
            during development.
        -->
        <roleManager enabled="true" />
  <compilation debug="true">
            <assemblies>
                <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            </assemblies>
        </compilation>
        <!--
            The <authentication> section enables configuration 
            of the security authentication mode used by 
            ASP.NET to identify an incoming user. 
        -->
        <authentication mode="Forms" />
        <!--
            The <customErrors> section enables configuration 
            of what to do if/when an unhandled error occurs 
            during the execution of a request. Specifically, 
            it enables developers to configure html error pages 
            to be displayed in place of a error stack trace.
-->
        <customErrors mode="Off" defaultRedirect="GenericErrorPage.htm">
          <!--<error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />-->
        </customErrors>
        
        <pages>
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </controls>
        </pages>
        <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
        </httpHandlers>
        <httpModules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules>
    
    <!-- Rules for sign up-->

    <membership>
      <providers>
        <remove name="AspNetSqlMembershipProvider"/>
        <add name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="LocalSqlServer"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             applicationName="/"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="10"
             minRequiredPasswordLength="5"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             />
      </providers>      
    </membership>
    </system.web>
    <system.codedom>
        <compilers>
            <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                <providerOption name="CompilerVersion" value="v3.5"/>
                <providerOption name="WarnAsError" value="false"/>
            </compiler>
            <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                <providerOption name="CompilerVersion" value="v3.5"/>
                <providerOption name="OptionInfer" value="true"/>
                <providerOption name="WarnAsError" value="false"/>
            </compiler>
        </compilers>
    </system.codedom>
    <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules>
            <remove name="ScriptModule"/>
            <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </modules>
        <handlers>
            <remove name="WebServiceHandlerFactory-Integrated"/>
            <remove name="ScriptHandlerFactory"/>
            <remove name="ScriptHandlerFactoryAppServices"/>
            <remove name="ScriptResource"/>
            <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </handlers>
    </system.webServer>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

یه لطفی کن. الان pt برای من یه دیتابیس ساخته که من میخوام به اون وصل شم و مسائل membership رو هم تو همون دیتابیس درج کنم. تنظیمات اون رو هم بهم بگو.
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
بسیار خوب، شما هم از membership provider و هم از rolemanager داری استفاده میکنی

برا اینکه دیتا بیس membership که الان رو سیستم شما هست رو ، روی هاست هم داشته باشی ، باید جدول هات رو یکی یکی تبدیل به اسکریپت کنی، از طریق sql server management studio به هاست وصل بشی و به عنوان query اون رو اونجا اجرا کنی تا جدول ها ساخته بشن
برای گرفنت کد ایجاد جدول هات، روش right click کن ، script table as و بعد create to رو انتخاب کن ، کد sql رو بهت میده

بعد از این کار ، توی web.config بیا connectionstring رو عوض کن و اونی بنویس که هاست برات تعریف کرده


البته کل دیتابیس رو از رو هارد میتونی به هاست منتقل کنی که برا این کار باید نسخه کامل sql server رو داشته باشی
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
من الان به دیتابیسی که روی هاست دارم با اسم ASPNETDB.MDF وصل شدم. توی این فایل کلی جدول هست.
aspnet_Applications
aspnet_Membership
aspnet_Paths
aspnet_PersonalizationAllUsers
aspnet_PersonalizationPerUser
aspnet_Profile
aspnet_Roles
aspnet_SchemaVersions
aspnet_Users
aspnet_UsersInRoles
aspnet_WebEvent_Events

همون طوری که گفتین من باید تمام این جدول ها رو روی دیتابیس سرورم بیارم و web.config رو دوباره تنظیم کنم. مثلا روی یکی از این جدول ها کلیک راست می کنم و مسیر زیر رو دنبال می کنم.
Script Table as / CREATE to / Clipboard

خب حالا مثلا من می خوام این Query رو وارد database رو هستم کنم. اولا چجوری ؟ ثانیا query کپی شده اینه که من نمی دونم بدرد مقصود ما می خوره ؟ به خط اول دقت کن.

کد:
USE [D:\GTL\APP_DATA\ASPNETDB.MDF]
GO
/****** Object:  Table [dbo].[aspnet_Applications]    Script Date: 12/02/2008 20:11:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[aspnet_Applications](
    [ApplicationName] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [LoweredApplicationName] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [ApplicationId] [uniqueidentifier] NOT NULL DEFAULT (newid()),
    [Description] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
PRIMARY KEY NONCLUSTERED 
(
    [ApplicationId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
UNIQUE NONCLUSTERED 
(
    [ApplicationName] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
UNIQUE NONCLUSTERED 
(
    [LoweredApplicationName] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
فکر کنم فهمیدم. خط اول رو یعنی مسیر دیتابیس رو تغییر بدم به نام دیتابیس و بعد query ها اجرا کنم؟ درسته؟
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
سوال بعدی اینه که خود کاربرها رو چجوری باید ایجاد کنیم روی هاست. چون دیگه که ابزار asp.net configuration برنامه visual studio رو نداریم روی هاست.
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
فکر کنم فهمیدم. خط اول رو یعنی مسیر دیتابیس رو تغییر بدم به نام دیتابیس و بعد query ها اجرا کنم؟ درسته؟
خط اول رو کلا پاک کن
با sql mamager به sql server که از هاست گرفتی کانکت کن
از new query این رو اجرا کن
اینجوری رو اکانت sql server روی هاست، جدول ساخته میشه
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
سوال بعدی اینه که خود کاربرها رو چجوری باید ایجاد کنیم روی هاست. چون دیگه که ابزار asp.net configuration برنامه visual studio رو نداریم روی هاست.
باید از اسکریپت های آماده استفاده کنید و یا اینکه کد نویسی کنید ;)
 

niterider

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
414
لایک‌ها
3
محل سکونت
The Most Beautifull Love , Tehran
یعنی یه بخش برای sign up بسازم؟ من کلا شاید 10 تا کاربر ثابت داشته باشم که می خوام همین جوری اطلاعاتشون رو تو دیتابیس بزارم. منظور از اسکریپت های آماده چیه؟

آقا شما واقعا خیلی باحالی ! ترکوندی ما رو با مرامت!
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
یعنی یه بخش برای sign up بسازم؟ من کلا شاید 10 تا کاربر ثابت داشته باشم که می خوام همین جوری اطلاعاتشون رو تو دیتابیس بزارم. منظور از اسکریپت های آماده چیه؟

آقا شما واقعا خیلی باحالی ! ترکوندی ما رو با مرامت!
خود asp.net کنترل های login رو داره، نگاه کن.
برا sign up خودش مثل همون فرم ابزار asp.net configuration برنامه visual studio رو داره
اما برا manage کردن کاربرها باید از کلاس membership استفاده کنی
در واقع user admin area رو باید خودت بنویسی
 
بالا