XmlSiteMapProvider

با سلام ! من یه وب سایت با استفاده از ویژوال وب دولوپر 2005 یا همون ویژوال استودیو طراحی کردم که در محیط لوکال و با iis هیچ مشکلی نداره و به راحتی اجرا میشه ولی وقتی آن رو در ftp بارگذاری کردم این خطا رو گرفته :
The file web.sitemap required by XmlSiteMapProvider does not exist.
که من متوجه نمیشم به چه معنی هست کسی می تونه منو راهنمایی کنه؟
 
دوست عزیز web.sitemap را میبایست در رووت اصلی آپلود کنید
از پاسختون ممنونم مشکل حل شد من در فضایی که یه سایت با asp کلاسیک طراحی کرده بودم یه پوشه ساختم و یه سایت با asp.net رو تست کردم که این مشکل پیش اومده این مشکل حل شد ولی در سایتم از امکانcreat user wisard هم استفاده کردم که هنگام ورود و از استفاده از امکان لوگین این خطا رو گرفت:
Access denied creating App_Data subdirectory
و این توضیحات و داده
To grant the necessary permissions, follow these steps:
In Windows Explorer, navigate to your application's directory.
Create a folder named "App_Data": Right-click, choose "New" menu item, choose "Folder" sub-menu item, and then type "App_Data" (without quotes).
Right-click on the "App_Data" subdirectory, within your application and select the "Properties" menu item.
In the "Properties" dialog box that opens, select the "Security" tab.
Click Add

In the "Enter the object names to select" box, enter 'NETWORK SERVICE' (without quotes).
Click OK
Make sure the account name is selected and then under Allow, check Write

Click OK
میدونم که میگه یه account name برای asp.net با اجازه خواندن و نوشتن ایجاد کن ولی نمیدونم این کارها رو کجا باید انجام بدم
ایا قبل از آپلود کردن؟که فکر نمیکنم​
 

zorig4fun

Member
با سلام

دوست عزیز لطفا تضیحات بیشتر بدهید

آیا شما از ممبر شیپ پروایدر فریم ورک 2 استفاده کردید یا اینکه پروایدر جدید نوشتید؟
دیتابیس درست کردید یا رو همان ویژوال استودیو بسند کردید؟
شما فایلها را روی هاست آپلود میکنید؟
نکته آخر اینکه پوشه App_Data میبایست در رووت اصلی باشد
 
  • Like
Reactions: MDP
با سلام
من فایل app_data رو داخل روت اصلی کپی کردم ان مشکل حل شد ولی یه خطای دیگه گرفت که این خطا من قبلا هم در لوکال وقتی یکی از سایتهای start kit microsoft و امتحان میکردم بهش برخوردم که وقتی فایلی رد که در این خطا اشاره کرده رو پاک کردم خطا برطرف شد دوست دارم بدونم این خطا اصلا برای چی هست ؟

An attempt to attach an auto-named database for file F:\HostingSpaces\myname\myname.com\wwwroot\App_Data\aspnetdb.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

و راستی من از member shipframework2 استفاده کردم و دیتابیس هم مال خود ویژواله ولی خیلی دوست دارم خودم providerبنویسم ولی دانشو ندارم ونمیدونم منبع فارسی از کجا پیدا میشه؟
 
آخرین ویرایش:

zorig4fun

Member
دوست گرامی متاسفانه منبع فارسی موجود نمیباشد یا شاید مقالات متفرقه که اکثرا مال فریم ورک 1 میباشد پیدا بشه

ممبر شیپ پروایدری که ماکروسافت ارائه داده کاملا مطمعن میباشد و هیچ اشکال فنی هم ندارد.

به دو روش میتوان پروایدر را تغییر داد
1. اضافه کردن جداولی که با جداول این پروایدر کار کند که مثلا از کاربر میخواهید اطلاعات بیشتری مانند آدرس یا تلفن و غیره را ذخیره کنید یک جدول به این منضور به دیتابیس اضافه میکنید.
2. کلا از جداول ممبر شیپ پروایدر استفاده نکنید و یک جدول با تمام اطلاعات درست کنید.

در هر دو حالت شما میبایست کلاس بنوسید که بالای 2000 خط میباشد به نظر من از روش اول استفاده کنید بهتره چون شما استاندارد را رعایت میکنید و شاید یک روزی بخواهید از یک برنامه ای که استاندارد را رئایت کرده استفاده کنید اون موقع اشکالی برای دیتابیس شما پیش نمیاد که کاربران را مجبور کنید دوباره ثبت نام کنند.

در مورد سوال شما مشکل اینجاست که اگر این سایتی را که درست کردید روی هاست آپلود کنید کار نخواهد کرد چون دیتابیسی در کار نیست. شما بهتر است که یک دیتابیس درست کنید نام گذاری کنید و جداول را با کمک خود فریم ورک 2 ایجاد کنید و یک کانکشن هم ایجاد کنید تا مشکل حل شود.
موفق باشید
 
  • Like
Reactions: MDP
در مورد ساخت یه جدول ،خود vwd وقتی از کنترل create user wisard استفاده کردم یه پوشه به نام app_data و در داخل آن یه دیتا بیس به نام aspnet.mdfساخته که شامل یه سری جداول مثل aspnet_membership و aspnet_user و aspnet_profile و ...هست
حالا اگه طبق فرمایش شما بخواهیم یه دیتا بیس درست کنیم و نام گذاری کنیم و یه کانکشن هم ایجاد کنیم باید اینو حذف کنیم ؟ به چه طریق عمل کنیم؟ (با همون فیلدهای پیش فرض جدول عضو گیری)
 

zorig4fun

Member
سلام

شما اول یک دیتابیس میبایست درست کنید با سیرکل سرور اکسپرس

بعد در فیمورک 2 یک فایل قرار دارد که با اجرای آن جداول در دیتابیس ایجاد شده یا دیتابیسی که از قبل داشتید جداول مربوت به ممبر شیپ پروایدر را با تمام پرسیژنها برای شما ایجاد خواهد کرد.
این فایل در مسیر ذیل میباشد:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe

با اجرای این فایل ویزاردی به شما داده میشود که که با تنظیم آن به دیتابیس مربوطه جداول را درست میکند اگر شما دیتابیس از قبل درست نکرده باشید خودش به طور پیشفرض دیتابیسی به نام aspnetdb ایجاد خواهد کرد.

تا اینجا دیتابیس کامل شده شما میبایست کدهائی که مربوط به کانکشن ممبرشیپ پروایدر به دیتابیس میباشد را داخل وب کانفیگ بنویسید و حالت اتوریزشن که به صورت دیفلت ویندوز میباشد را به فرم تغییر بدهید:

کد:
<connectionStrings>
		<clear/>
		<add name="LocalSQLServer" connectionString="Data Source=HOME\SQLEXPRESS;Initial Catalog=نام دیتابیس;Integrated Security=True"/>
	</connectionStrings>
	<system.web>
<authentication mode="Forms">
</authentication>
	</system.web>


قابل توجه اینکه نام LocalSQLServer باید همینگونه بماند و نباید عوض کنید البته میشود عوض کرد ولی باید کدها را دستکاری کنید.



من در جواب قبلی اشتباهی گفتم دو روش ولی 3 روش میشه اطلاعات بیشتری از کاربر را وارد دیتابیس کرد. روش سوم استفاده از اکس ام ال هست که از یکی از جداول که یادم نیست استفاده کرده و کدها ذخیره میشود و بعد داخل یک فایل خوانده میشود که اطلاعات کاربری و تنظیمات کاربر را شامل میشود.

موفق باشید
 
سلام من دوباره دیتابیس نساختم چون یه دیتابیسsqlserver به نام aspnetdb داخل پوشه app_data ساخته شده بود ولی فایل aspn et_regsql.exe رو اجرا کردم و بعد از اتمام ویزارد فایل web.config رو همونطور که فرمودید تغییر دادم به جای نام دیتابیس aspnetdb.mdb رو گذاشتم و upload کردم بعد از اجرای سایت در اینترنت مثلا هنگام ایجاد عضویت این خطا رو داد


An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

و البته این خطا هم در لوکال وقتی در محیط ویژوال run کردم و هم در اینترنت داد
ممکنه از این باشه:
<connectionStrings>
<
clear/>
addname="LocalSQLServer"connectionString="DataSource=HOME\SQLEXPRESS;InitialCatalog=aspnetdb.mdf;Integrated Security=True"/>
</
connectionStrings>
 

zorig4fun

Member
دوست گرامی اینجور که من در کدهای شما میبینم فاصله ای بین aspnetdb .mdf میباشد شاید مشکل از آن باشد.

درکل این پیغام خطا زمانی داه میشود که ارطبات با دیتابیس میسر نباشد. یا کانکشن درست نباشد یا اینکه دیتابیس در سروری قرار داشته باشد که از لحاض امنیتی اجازه کانکت شدن از یک کامپیوتر دیگر را ندهد.

موفق باشید
 
سلام
من این بار پوشهapp_data و دیتابیس aspnetdb که خود ویژوال درست کرده بود و deleteکردم و دوباره یه پوشه app_dataو دیتابیس و در ان ساختم بعد فایل aspn et_regsql.exe و اجرا کردم با همون پیش فرضهاش و تنظیمات webconfig رو هم دقیقا مثل گقته شما انجام دادم به جای نام دیتابیس aspnetdb.mdf گذاشتم ولی این خطا و گرفت:

Exception Details: System.Data.SqlClient.SqlException: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
شما علت و نحوه برطرف کردن این خطا رو میدونید؟؟؟
 

zorig4fun

Member
سلام دوست گرامی

من یک سری کد به شما دادم که با استفاده از تکنولوژی فریمورک 2 یک ممبرشیپ پروایدر درست کنید شما این کدها را باید الگو قرار بدهید نه اینکه دقیقا همان را استفاده کنید. (من که نمیدونم سیستم شما چگونه تنظیم شده)

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

برای حل مشکل شما این کارها را انجام دهید:

شما اصلا نیازی به پوشه app_data ندارید بنابر این بودن یا نبودن فرقی نداره

من کانکشنی که ایجاد کردم تراست کانکشن میباشد و این کانکشن مسیرش در سرور HOME\SQLEXPRESS میباشد که مربوط به سرور من هست شما وقتی SQLEXPRESS خودتان را باز کنید مسیر سرور را در ماشین میتوانید ببینید.

حالا شما اگر پرژه را آپلود کنید 2 تا کار میبایست انجام بدهید اول اینکه دیتابیس را که توی هاست باشد را درست کنید (که دیتابیس روی ماشین را بک آپ بگیرید و در سرور ری استور کنید) دوم اینکه کانکشن را در وب کانفیگ تغییر دهید و مسیر دیتابیسی را که در سرور هاست هست را بدهید (آی پی ادرس) و نام دیتابیس را مشخص کنید یوزر نیمی که میتواند با آن دیتابیس ارطبات برقرار کند را وارد کنید و پسورد را هم وارد کنید زیرا در هاست نمیتوانید از تراست کانکشن استفاده کنید (میشود ولی از نظر امنیتی بهتر است نکنید)

امیدوارم پاسخ سوال را گرفته باشید اگر سوالی هست در خدمت هستم

این را هم اضافه کنم که در ویژوال استودیو برنامه این امکان را به شما میدهد که بدون داشتن آی آی اس یک سرور برای تست پروژه داشته باشید درواقع به صورت مجازی برای شما یک سرور ایجاد میکند.


شما اول روی کامپوتر خود پرژه را تست کنید که کانکشن و همه چیز کار میکند وقتی همه چیز درست بود بعد رو سرور هاست آپلود کنید
 
سلام ممنون از توضیحاتتون
من نام سرور خودمو در کانکشن استرینگ وارد کردم ارتباط برقرار شد ولی با وجود اینکه در تنظیمات virtual directory گزینه write رو هم تیک زدم و در قسمت security edit تیک anonymous access رو برداشتم این خطا که مربوط به تنها قابل خواندن بودن date base گرفته
Failed to update database "C:\INETPUB\WWWROOT\NEME\APP_DATA\ASPNETDB.MDF" because the database is read-only.
که دیگه نمیدونم باید چه کار کنم .راستی من در مورد کار با sql server و restore کردند یتابیس در سرور به همراه user name o password مبیتدی هستم بیشتر با access کار کردم البته یه چیزهایی میدونم ولی خیلی کم ممنون میشم راجع به این موارد یه مثال و یا توضیح بیشتری بدین
 

جدیدترین ارسال ها

بالا