PDA

View Full Version : با asp.net چطور یک دایرکتوری روی سرور ایجاد کنم؟



h.r.m
شنبه 20 فروردین 1384, 13:34 عصر
من میخوام بتونم برای بعضی کاربرها بر اساس نام کاربریشون روی سرور دایرکتوری بسازم.
ببخشید اگه سوال پیش پا افتاده میپرسم.
وقتی از دستور



directory.createdirectory(server.MapPath("")& "\" &txtSubject.text)


استفاده میکنم روی localhost خوب جواب میده اما روی سرور هاستم خطا میگیره.
کلافه شدم از بسکه با این server.mappath ور رفتم ... :cry:

kochol
شنبه 20 فروردین 1384, 14:06 عصر
سلام

البته من مطمین نیستم ولی این کد را در وب کانفیگ قرار بده ببین کار می کنه


<authentication mode="Windows" />
<identity impersonate="true"/>

M.GhanaatPisheh
شنبه 20 فروردین 1384, 14:21 عصر
شما روی هاستتون اجازه خواندن و نوشتن روی اون مسیر رو ندارید
با هاستتون تماس بگیرید و مشکل رو بگید.

Behrouz_Rad
شنبه 20 فروردین 1384, 14:46 عصر
به احتمال زیاد نداشتن مجوز منجر به بروز خطا می شود.
با دیدن متن خطا بهتر می توان قضاوت کرد.

h.r.m
شنبه 20 فروردین 1384, 16:56 عصر
جناب kochol عزیز اون کد رو توی وب کانفیگ گذاشتم ولی جواب نداد!
من توی دریمویور کد مینویسم و وب کانفیگ من الان این شکلیه:




<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
<authentication mode="Windows" />
<identity impersonate="true"/>
</configuration>

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







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

باید توی یه کنترل textbox به اسم txtSubject نام فایل رو بگیره و توی یکی دیگه به اسم txtContent متن رو بگیره و بفرسته برای ذخیره شدن توی سرور. اما اصلا صفحه باز نمیشه که بخواد متنی بگیره. یعنی به مرحله submit نمیرسه.

این کد رو آپلود کردم اما خطا میگیره



<script language="vb" runat="server">

Sub page_load(Sender As Object,E As EventArgs)
If page.IsPostBack then

directory.createdirectory(server.MapPath("/dailynews")& "\" &txtSubject.text)
dim fp as StreamWriter = New StreamWriter(server.MapPath("dailynewstxt")&"\" & txtSubject.text & ".txt")
fp.write(cstr(txtContent.Text))
fp.close

end if
End Sub

</script>




ولی با وجودیکه روی localhost خیلی خوب جواب میده روی سرور این پیغام میاد





Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>


Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>

h.r.m
شنبه 20 فروردین 1384, 16:59 عصر
بهروز جان اینم متن خطا ولی با وجود اینکه من این کدی رو که توی خطا اومده در وب کانفیگم نوشتم اما باز هم اصل مشکل رو مشخص نمیکنه و دوباره همین پیغام رو مینویسه.

Behrouz_Rad
شنبه 20 فروردین 1384, 17:33 عصر
متن خطا همچنان نامشخص است.
در توضیحات خطا هم ذکر شده، برای اینکه Remote ها هم بتوانند متن خطا را مشاهده کنند، خاصیت customErrors را برابر با off قرار دهید.
سپس خطا را در اینجا بنویسید.

h.r.m
شنبه 20 فروردین 1384, 18:37 عصر
من که CustomErrors را off کردم!
کد وب کانفیگ بالای پست هست اگر اشکالی داره لطفا بهم بگین.

Behrouz_Rad
شنبه 20 فروردین 1384, 21:29 عصر
در صورتی که کد زیر در فایل Web.Config شما وجود داشته باشد، عدم نمایش جزئیات خطا محال است.
مشکل شما از جای دیگه ایه!!!


<configuration>
<system.web>
<customErrors mode="Off" />
</system.web>
</configuration>

در ضمن، شما چرا از Windows Authentication استفاده می کنید!!!
اگر در حال ایجاد یک Intranet باشید، Windows Authentication گزینه مناسبی است در غیر اینصورت باید از Forms Authentication استفاده کنید.
به هر حال...
راه دیگه ای که به نظرم می رسه، استفاده از تابع ای پی آی mkdir هست.


Declare Function _mkdir Lib "msvcrt.dll" (ByVal path As String) As Integer

Shared Function crearDirectorio(ByVal path As String) As DirectoryInfo
Dim returnCode As Integer = _mkdir(path)
If returnCode <> 0 Then
Throw New ApplicationException("Error calling DLL " + path + "), Error Code: " + returnCode.ToString())
End If
Return New DirectoryInfo(path)
End Function

اگر با خطای Unable to Load DLL، مواجه شدید، میتونید از فایل kernel32.dll استفاده کنید.
البته تمامی این راهها جنبه پیشنهادی داشت، به احتمال 90 درصد، Permission شما باید تنظیم شود.

h.r.m
چهارشنبه 24 فروردین 1384, 19:48 عصر
حق با شما بود. سرویس دات نت روی هاست من فعال نشده بود و مشکل برایم ایجاد میکرد. از راهنمایی شما متشکرم.

Behrouz_Rad
چهارشنبه 24 فروردین 1384, 22:35 عصر
:)