تظهر "فشل في تسجيل الدخول: اسم مستخدم غير معروف أو سيئة" رسالة خطأ أثناء الوصول إلى موارد أمان محسن عن بعد من تطبيق ASP.NET

ينطبق على: Microsoft ASP.NET

ملخص


تتناول هذه المقالة السلوك الوصول إلى مورد بعيد تحسين الأمان من تطبيق Microsoft ASP.NET. تحتوي هذه المقالة على حلول هذه المشكلة ما يلي:
  • في الملف Machine.config، تغيير سمة اسم المستخدم والسمه كلمة المرور processModel العنصر.
  • تشغيل تطبيق تحت الهوية المستخدم الذي لديه أذونات للمورد البعيد تحسين الأمان باستخدام عنصر التمثيل في ملف Web.config.
  • تغيير كلمة مرور حساب مستخدم ASPNET قيمة معروفة، وقم بإنشاء حساب مستخدم ASPNET نفس التي تستخدم نفس كلمة المرور على الكمبيوتر البعيد.
  • الوصول إلى المورد البعيد تحسين الأمان باستخدام مكون COM قيد التشغيل ضمن سياق الأمان لحساب مستخدم لديه أذونات للمورد البعيد محسنة الأمان.
  • تشغيل الجزء من التعليمات البرمجية التي يقوم بالوصول إلى مورد بعيد محسنة الأمان تحت هوية المستخدم الذي لديه أذونات للمورد البعيد محسنة الأمان.
  • استدعاء دالة WNetAddConnection2 لفتح الاتصال بالمورد البعيد تحسين الأمان ومن ثم تعيين محرك الأقراص المحلي إلى مورد بعيد تحسين الأمان في التعليمات البرمجية.
كما تتضمن هذه المقالة خطوات مفصلة لإعادة إنشاء السلوك.

الأعراض


عند الوصول إلى الموارد البعيدة بإجراءات أمان متقدمة من تطبيق ASP.NET، قد تتلقى رسالة الخطأ التالية:
فشل تسجيل الدخول: اسم مستخدم غير معروف أو كلمة مرور غير صالحة.

السبب


بشكل افتراضي، يتم تشغيل تطبيق ASP.NET ضمن سياق الأمان لحساب مستخدم ASPNET. تطبيق ASP.NET الوصول إلى المورد البعيد تحسين الأمان باستخدام حساب مستخدم ASPNET إذا تحققت الشروط التالية:
  • عند ميزة تمثيل لم يتم تشغيل تطبيق ASP.NET
  • عند تعيين أسلوب المصادقة في خدمات معلومات إنترنت (IIS) ل Microsoft للوصول المجهول
ومع ذلك، قد لا يكون حساب مستخدم ASPNET أذونات للوصول إلى المورد البعيد محسنة الأمان.

الحل البديل


لحل هذا السلوك، استخدم إحدى الطرق التالية:

استخدام الملف Machine.config

تغيير سمة اسم المستخدم و كلمة المرور السمة في العنصر processModel من ملف Machine.config لبيانات الاعتماد للمستخدم الذي لديه حق الوصول إلى المورد البعيد محسنة الأمان. بعد إجراء هذا التغيير، قم بإعادة تشغيل جهاز الكمبيوتر.
<processModel enable="true" 
userName="<UserName>"
password="<Password>" . . ./>
ملاحظة: < اسم المستخدم > و
< كلمة المرور > عبارة عن عناصر نائبة لبيانات الاعتماد للمستخدم الذي لديه حق الوصول إلى المورد البعيد محسنة الأمان.

هام: لا يتعين عليك تخزين كلمات المرور ذات النص الواضح في ملف Machine.config. بدلاً من ذلك، استخدم الأداة المساعدة Aspnet_setreg.exe لتخزين كلمات المرور المشفرة في السجل.
للحصول على معلومات إضافية حول كيفية استخدام الأداة المساعدة Aspnet_setreg، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
كيفية استخدام الأداة المساعدة ASP.NET لتشفير بيانات الاعتماد أو سلاسل اتصال حالة جلسة العمل 329290

عند استخدام هذا الأسلوب، يتم التغيير العالمي. وهذا العائق لأنه سيتم تشغيل تطبيقات ويب وخدمات ويب أخرى قيد التشغيل على الكمبيوتر حيث تقوم التغيير أيضا في هذا السياق الأمني الجديد.

ومع ذلك، هذا ليس الحالة ل Microsoft إنترنت خدمات معلومات (IIS) 6.0 على نظام التشغيل Microsoft Windows Server 2003 لأنه يستخدم IIS تجمعات التطبيقات لتطبيقات ويب وخدمات ويب. يمكن تشغيل كل تطبيق في تجمع التطبيقات الخاص به. يمكن تكوين كل تجمع تطبيقات لحقل كلمة المرور وحقل اسم المستخدم. يمكنك تعيين هذا التكوين ضمن سياق الأمان للعملية المنفذة في تجمع التطبيق حيث يتم تشغيل التطبيق.

إذا قمت بتغيير حساب المستخدم ضمن سياق الأمان الذي يتم تشغيل عملية عامل ASP.NET في، قد يلزم أيضا منح الأذونات الصحيحة لحساب المستخدم هذا في بعض المجلدات الموجودة على ملقم ويب لجعل عملية عامل تشغيل بنجاح.


لمزيد من المعلومات حول كيفية إنشاء حساب مخصص لتشغيل تطبيقات ASP.NET، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:العودة إلى أعلى

استخدام ميزة الانتحال في ملف Web.config

يمكنك تعيين هويات الثابتة التي يمكنها الوصول إلى المورد البعيد أمان محسن للدلائل الظاهرية المحددة باستخدام الإعداد التالي في ملف Web.config للتطبيق الخاص بك.
<identity impersonate="true"
userName="<UserName>"
password="<Password>"/>
ملاحظة: < اسم المستخدم > و
< كلمة المرور > عبارة عن عناصر نائبة لبيانات الاعتماد للمستخدم الذي لديه حق الوصول إلى المورد البعيد محسنة الأمان.

هام: لا يتعين عليك تخزين كلمات المرور ذات النص الواضح في ملف Machine.config. بدلاً من ذلك، استخدم الأداة المساعدة Aspnet_setreg.exe لتخزين كلمات المرور المشفرة في السجل.
للحصول على معلومات إضافية حول كيفية استخدام الأداة المساعدة Aspnet_setreg، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
كيفية استخدام الأداة المساعدة ASP.NET لتشفير بيانات الاعتماد أو سلاسل اتصال حالة جلسة العمل 329290

يمكنك استخدام أحد الحسابات التالية للتمثيل:
  • حساب المجال
  • حساب محلي "متطابقة"
تم حساب محلي "متطابقة" مطابقة اسم مستخدم وكلمة مرور متطابقة على جهازي كمبيوتر. يجب استخدام هذا الحساب إذا كانت أجهزة الكمبيوتر الموجودة في مجالات منفصلة وليس له أي علاقة ثقة.

العودة إلى أعلى

تغيير كلمة مرور حساب مستخدم ASPNET

بشكل افتراضي، يتم تشغيل عملية عامل ASP.NET (Aspnet_wp.exe) ضمن حساب مستخدم ASPNET. يوجد حساب مستخدم ASPNET ضمن المستخدمون المحليون والمجموعات المحلية. هذا الحساب لديه كلمة مرور قوية الآمنة في مرجع النظام المحلي (LSA).

لاستخدام هذا الأسلوب، اتبع الخطوات التالية:
  1. المستخدمون المحليون والمجموعات على ملقم ويب، تغيير كلمة مرور حساب ASPNET إلى قيمة معروفة.
  2. استبدال بيانات الاعتماد في العنصر processModel في الملف Machine.config بما يلي.
    <processModel enable="true" 
    userName="ASPNET"
    password="<Password>" . . ./>
    ملاحظة: < كلمة المرور > هو العنصر النائب لكلمة المرور التي قمت بتعيينها لحساب مستخدم ASPNET.
  3. على الكمبيوتر البعيد، إنشاء حساب ASPNET الذي يسمى وله حساب مستخدم ASPNET على ملقم ويب كلمة المرور نفسها.
  4. إضافة حساب ASPNET على الكمبيوتر البعيد لعنصر تحكم قائمة الوصول (ACL) المورد محسنة الأمان.
العودة إلى أعلى

استخدام مكون COM للوصول إلى المورد البعيد أمان محسن

  1. إنشاء عنصر تحكم ActiveX:
    1. بدء تشغيل برنامج Microsoft Visual Basic 6.0.
    2. إنشاء مشروع ActiveX Dll.
    3. من القائمة مشروع ، انقر فوق
      مراجع. يظهر مربع حوار المراجع .
    4. انقر لتحديد خانة الاختيار وقت تشغيل البرمجة النصية ل Microsoft في مربع قائمة المراجع المتوفرة لإضافة المرجع في المشروع الخاص بك.
    5. انقر فوق موافق.
    6. اضغط CTRL + R لفتح "مستكشف المشاريع"، انقر فوق
      مشروع 1ومن ثم اضغط F4 للوصول إلى خصائص المشروع.
    7. تغيير خاصية الاسم إلى
      وصول عن بعد.
    8. في "مستكشف المشاريع"، انقر فوق Class1.cls، ثم قم بتغيير خاصية الاسم إلى
      كلسريموتيكسيس.
    9. من القائمة ملف ، انقر فوق حفظ المشروع. يظهر مربع الحوار حفظ باسم .
    10. حفظ ملف الفئة ك clsRemoteAccess.cls.
    11. حفظ ملف المشروع ك remoteAccess.vbp.
    12. قم بلصق التعليمة البرمجية التالية في إطار التعليمات البرمجية لفئة كلسريموتيكسيس :
      Public fs As New FileSystemObject
      Public txtStream As TextStream
      '
      Public Function WriteToFile() As Boolean
      On Error GoTo Erro
      Set txtStream = fs.OpenTextFile("\\<ServerName>\<ShareName>\<TextFileName>", ForAppending, False)
      '
      txtStream.WriteLine ("Hi i am able to write")
      txtStream.Close
      WriteToFile = True
      Exit Function
      Erro:
      WriteToFile = False
      End Function
      ملاحظة: < اسم الخادم >
      < اسم > المشاركة، و
      < تيكستفيلينامي > عبارة عن عناصر نائبة لتلك القيم في البيئة الخاصة بك.
    13. من القائمة ملف ، انقر فوق إنشاء remoteAccess.dll. يظهر مربع الحوار إنشاء مشروع .
    14. انقر فوق موافق.
    15. من القائمة ملف ، انقر فوق
      إنهاء. يظهر مربع الحوار Microsoft Visual Basic .
    16. انقر فوق نعم.
  2. إنشاء تطبيق COM +:
    1. على كمبيوتر يستخدم نظام التشغيل Microsoft Windows 2000 Server مسبقاً، انقر فوق ابدأ، وأشر إلى
      البرامج، أشر إلى أدوات إدارية، وثم انقر فوق خدمات المكونات. يظهر مربع الحوار " خدمات المكونات ".
    2. توسيع خدمات المكونات، قم بتوسيع
      أجهزة الكمبيوتر، توسيع جهاز الكمبيوتر، ومن ثم انقر فوق
      تطبيقات COM +.
    3. انقر نقراً مزدوجاً فوق تطبيقات COM +، انقر فوق
      جديد، ثم انقر فوق تطبيق. على
      يظهر معالج مرحبا بك في معالج تثبيت التطبيق COM .
    4. انقر فوق التالي.
    5. انقر فوق إنشاء تطبيق فارغ.
    6. في المربع أدخل اسماً للتطبيق الجديد ، اكتب ريموتيكومبونينت، ومن ثم انقر فوق التالي.
    7. انقر فوق هذا المستخدم.
    8. في المربع المستخدم ، اكتب اسم المستخدم الذي لديه حق الوصول إلى المورد البعيد محسنة الأمان.
    9. في المربع كلمة المرور ، اكتب كلمة المرور لحساب المستخدم.
    10. في المربع تأكيد كلمة المرور ، اكتب كلمة المرور مرة أخرى.
    11. انقر فوق التالي، ومن ثم انقر فوق
      قم إنهاء.
  3. إضافة عنصر تحكم ActiveX إلى التطبيق COM +:
    1. في الجزء الأيسر من مربع الحوار خدمات المكونات ، قم بتوسيع تطبيقات COM +، قم بتوسيع
      ريموتيكومبونينتومن ثم انقر فوق
      المكونات.
    2. انقر نقراً مزدوجاً فوق مكونات، أشر إلى
      جديد، ثم انقر فوق المكون. على
      يظهر معالج مرحبا بك في معالج تثبيت مكون COM .
    3. انقر فوق التالي.
    4. انقر فوق تثبيت مكون (مكونات) جديدة.
    5. حدد موقع الملف remoteAccess.dll الذي قمت بإنشائه في الخطوة 1.
    6. انقر فوق فتح، وانقر فوق
      التالي، ثم انقر فوق إنهاء. هذه الخطوة تثبيت مكتبة الارتباط الحيوي (DLL) في تطبيق COM +.
  4. استخدام مكون COM في تطبيق ASP.NET:
    1. Microsoft Visual Studio.NET.بدء تشغيل
    2. في القائمة ملف ، أشر إلى
      جديد، ثم انقر فوق المشروع. يظهر مربع الحوار مشروع جديد .
    3. ضمن أنواع المشروع، انقر فوق
      مشاريع Visual Basic.
    4. ضمن قوالب، انقر فوق تطبيق ويب ASP.NET، ومن ثم انقر فوق موافق.
    5. في "مستكشف الحلول"، انقر بالزر الأيمن
      مراجع، ثم انقر فوق إضافة مرجع. على
      يظهر مربع الحوار إضافة مرجع .
    6. انقر فوق علامة التبويب COM .
    7. في العمود اسم المكون ، انقر فوق
      وصول عن بعد.
    8. انقر فوق تحديد، ومن ثم انقر فوق
      "موافق".
    9. في "مستكشف الحلول"، انقر بالزر الأيمن
      WebForm1.aspx الملفات ومن ثم انقر فوق عرض التعليمات البرمجية.
    10. قم بلصق التعليمة البرمجية التالية أعلى الملف WebForm1.aspx.vb.
      Imports remoteAccess
    11. تحديد موقع أسلوب Page_Load .
    12. قم بلصق التعليمة البرمجية التالية في أسلوب Page_Load .
              Dim objRemoteAccess As New clsRemoteAccessClass
      Dim blnWriteResult As Boolean
      '
      blnWriteResult = objRemoteAccess.WriteToFile()
      '
      If (blnWriteResult) Then
      Response.Write("Success")
      Else
      Response.Write("Failed")
      End If
    13. في بنية القائمة، انقر فوق إنشاء حلول.
    14. في القائمة " تصحيح "، انقر فوق
      ابدأ. تتلقى رسالة نجاح في المستعرض.
العودة إلى أعلى

استخدام ميزة تمثيل التعليمات البرمجية

بشكل افتراضي، يتم تشغيل عملية عامل ASP.NET (Aspnet_wp.exe) ضمن سياق الأمان لحساب مستخدم ASPNET. لاستخدام هذا الأسلوب، يجب أن يكون حساب المستخدم ضمن سياق الأمان الذي يتم تشغيل عملية عامل ASP.NET (Aspnet_wp.exe) في جزء من نهج "العمل كجزء من نظام التشغيل". يمكنك استخدام نهج الأمان المحلي في الأدوات الإدارية ل Windows لإضافة حساب مستخدم ASPNET إلى نهج "العمل كجزء من نظام التشغيل".

ملاحظة: لاستخدام هذا الأسلوب، يجب الحفاظ على قائمة بأسماء المستخدمين وكلمات المرور الخاصة بهم المطابق في التطبيق الخاص بك. يتم استخدام أسماء المستخدمين وكلمات المرور للاتصال بالموارد البعيدة محسنة الأمان من التعليمات البرمجية، يجب إجراء التغييرات في التطبيق الخاص بك عند تغيير هذه أسماء المستخدمين أو كلمات المرور الخاصة بهم المطابق.
  1. بدء تشغيل Microsoft Visual Studio.NET
  2. في القائمة ملف ، أشر إلى
    جديد، ثم انقر فوق المشروع. يظهر مربع الحوار مشروع جديد .
  3. تحديد مشاريع Visual Basic ضمن
    أنواع المشاريع.
  4. حدد تطبيق ويب ASP.NET ضمن
    قوالب.
  5. انقر فوق موافق.
  6. زر الماوس الأيمن فوق الملف WebForm1.aspx في نافذة "مستكشف الحلول" ومن ثم انقر فوق عرض التعليمات البرمجية.
  7. أضف التعليمات البرمجية التالية في الأعلى
    ملف WebForm1.aspx.vb .
    Imports System.IO
    Imports System.Security
    Imports System.Security.Principal
  8. حدد موقع العبارة System.Web.UI.Page يرث WebForm1 الفئة العامة وقم بإضافة التعليمات البرمجية التالية بعد عبارة System.Web.UI.Page يرث WebForm1 فئة عامة .
        Dim LOGON32_LOGON_INTERACTIVE As Integer = 2
    Dim LOGON32_PROVIDER_DEFAULT As Integer = 0
    '
    Declare Function LogonUserA Lib "advapi32.dll" (ByVal lpxzUsername As String, _
    ByVal lpszDomain As String, _
    ByVal lpszpassword As String, _
    ByVal dwLogonType As Integer, _
    ByVal dwLogonProvider As Integer, _
    ByRef phToken As IntPtr) As Integer
    Declare Auto Function DuplicateToken Lib "advapi32.dll" ( _
    ByVal ExistingTokenHandle As IntPtr, _
    ByVal ImpersonationLevel As Integer, _
    ByRef DuplicateTokenHandle As IntPtr) As Integer
    Declare Auto Function RevertToSelf Lib "advapi32.dll" () As Long
    '
    Declare Auto Function CloseHandle Lib "Kernel32.dll" (ByVal handle As IntPtr) As Long
    '
    Dim impersonationContext As WindowsImpersonationContext
  9. تحديد موقع أسلوب Page_Load ثم قم بلصق التعليمة البرمجية التالية في أسلوب Page_Load .
            Try
    If impersonateValidUser("<UserName>", "", "<Password>") Then

    Dim fs As New FileStream("\\<ServerName>\<ShareName>\<TextFileName>", FileMode.Append)
    Dim w As New StreamWriter(fs)
    Try
    w.Write(w.NewLine)
    w.WriteLine("Hi how are you")
    w.Close()
    fs.Close()
    Catch
    w.Close()
    fs.Close()
    End Try
    '
    undoImpersonation()
    Response.Write("Success")
    Else
    Response.Write("Failure")

    End If
    Catch ex As Exception
    Response.Write(ex.Message)
    Response.Write(vbNewLine & User.Identity.Name)
    Response.Write(vbNewLine)
    Response.Write(vbNewLine & Principal.WindowsIdentity.GetCurrent.Name)
    End Try
    ملاحظة: < اسم الخادم >
    <ShareName>,
    <UserName>,
    < كلمة المرور >و
    < تيكستفيلينامي > عبارة عن عناصر نائبة لتلك القيم في البيئة الخاصة بك. < كلمة المرور > و
    < اسم المستخدم > هي القيم الخاصة ببيانات الاعتماد للمستخدم الذي قام بالوصول إلى
    < تيكستفيلينامي > ملف على الكمبيوتر البعيد.
  10. حدد موقع العبارة End Sub وقم بلصق التعليمة البرمجية التالية بعد العبارة End Sub .
    '
    Private Function impersonateValidUser(ByVal userName As String, _
    ByVal domain As String, ByVal password As String) As Boolean
    Dim tempWindowsIdentity As WindowsIdentity
    Dim token As IntPtr = IntPtr.Zero
    Dim tokenDuplicate As IntPtr = IntPtr.Zero
    impersonateValidUser = False
    '
    If RevertToSelf() Then
    If LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, _
    LOGON32_PROVIDER_DEFAULT, token) <> 0 Then
    If DuplicateToken(token, 2, tokenDuplicate) <> 0 Then
    tempWindowsIdentity = New WindowsIdentity(tokenDuplicate)
    impersonationContext = tempWindowsIdentity.Impersonate()
    If Not impersonationContext Is Nothing Then
    impersonateValidUser = True
    End If
    End If
    End If
    End If
    '
    If Not tokenDuplicate.Equals(IntPtr.Zero) Then
    CloseHandle(tokenDuplicate)
    End If
    '
    If Not token.Equals(IntPtr.Zero) Then
    CloseHandle(token)
    End If
    '
    End Function
    '
    Private Sub undoImpersonation()
    impersonationContext.Undo()
    End Sub
  11. في بنية القائمة، انقر فوق إنشاء حلول.
  12. في القائمة " تصحيح "، انقر فوق
    ابدأ. تتلقى رسالة نجاح في المستعرض.
ملاحظة: لاستخدام هذا الأسلوب، يجب الحفاظ على قائمة بأسماء المستخدمين وكلمات المرور الخاصة بهم المطابق في التطبيق الخاص بك. يتم استخدام أسماء المستخدمين وكلمات المرور للاتصال بالموارد البعيدة محسنة الأمان من التعليمات البرمجية، يجب إجراء التغييرات في التطبيق الخاص بك عند تغيير هذه أسماء المستخدمين أو كلمات المرور الخاصة بهم المطابق.

العودة إلى أعلى

قم باستدعاء دالة WNetAddConnection2 في التعليمات البرمجية الخاصة بك

لاستخدام هذا الأسلوب، يجب استدعاء الدالة WNetAddConnection2 . دالة WNetAddConnection2 يقوم باتصال بمورد شبكة اتصال. الدالة يمكن إعادة توجيه جهاز محلي إلى موارد شبكة الاتصال.

ملاحظة: لاستخدام هذا الأسلوب، يجب الحفاظ على قائمة بأسماء المستخدمين وكلمات المرور الخاصة بهم المطابق في التطبيق الخاص بك. يتم استخدام أسماء المستخدمين وكلمات المرور للاتصال بالموارد البعيدة محسنة الأمان من التعليمات البرمجية، يجب إجراء التغييرات في التطبيق الخاص بك عند تغيير هذه أسماء المستخدمين أو كلمات المرور الخاصة بهم المطابق.
  1. بدء تشغيل Microsoft Visual Studio.NET
  2. في القائمة ملف ، أشر إلى
    جديد، ثم انقر فوق المشروع. يظهر مربع الحوار مشروع جديد .
  3. ضمن أنواع المشروع، انقر فوق مشاريع Visual Basic.
  4. ضمن قوالب، انقر فوق تطبيق ويب ASP.NET، ومن ثم انقر فوق موافق.
  5. في "مستكشف الحلول"، انقر بالزر الأيمن
    WebForm1.aspx الملفات ومن ثم انقر فوق عرض التعليمات البرمجية.
  6. أضف التعليمات البرمجية التالية أعلى الملف WebForm1.aspx.vb.
    Imports System.IO
    Imports System.Runtime.InteropServices
  7. أضف التعليمات البرمجية التالية بعد عبارة System.Web.UI.Page يرث WebForm1 فئة عامة .
        '
    Structure NETRESOURCE
    Public dwScope As Int32
    Public dwType As Int32
    Public dwDisplayType As Int32
    Public dwUsage As Int32
    Public lpLocalName As String
    Public lpRemoteName As String
    Public lpComment As String
    Public lpProvider As String
    End Structure
    '
    Public Const NO_ERROR As Int32 = 0
    Public Const CONNECT_UPDATE_PROFILE As Int32 = &H1
    Public Const RESOURCETYPE_DISK As Int32 = &H1
    '
    Declare Function WNetAddConnection2 Lib "mpr.dll" Alias _
    "WNetAddConnection2A" (ByRef lpNetResource As NETRESOURCE, _
    <MarshalAs(UnmanagedType.LPStr)> ByVal lpPassword As String, <MarshalAs(UnmanagedType.LPStr)> ByVal lpUserName As String, _
    ByVal dwFlags As Int32) As Int32
    '
    Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias _
    "WNetCancelConnection2A" (ByVal lpName As String, _
    ByVal dwFlags As Long, ByVal fForce As Long) As Long
  8. تحديد موقع أسلوب Page_Load .
  9. قم بلصق التعليمة البرمجية التالية في أسلوب Page_Load .
            Try
    '
    Dim Result As Long
    Dim theNetResource As NETRESOURCE
    theNetResource.dwType = RESOURCETYPE_DISK
    theNetResource.lpRemoteName = "\\<ServerName>\<ShareName>"
    theNetResource.lpLocalName = "X:"
    '
    Result = WNetAddConnection2(theNetResource, "<Password>", "<Domain\UserName>", CONNECT_UPDATE_PROFILE)
    '
    If (Result = NO_ERROR) Then
    '
    Dim fs As New FileStream("X:\<TextFileName>", FileMode.Append)
    Dim w As New StreamWriter(fs)
    '
    Try
    w.Write(w.NewLine)
    w.WriteLine("Hi how are you")
    w.Close()
    fs.Close()
    Response.Write("Success")
    Catch
    Response.Write("Failed")
    w.Close()
    fs.Close()
    End Try
    '
    Else
    Response.Write("Failed")
    End If '
    Result = WNetCancelConnection2(theNetResource.lpLocalName, 0, 0)
    '
    Catch
    '
    End Try
    '
    ملاحظة: < اسم الخادم >
    <ShareName>,
    <Password>,
    < اسم المستخدم > \ المجال، و
    < تيكستفيلينامي > عبارة عن عناصر نائبة لتلك القيم في البيئة الخاصة بك. < كلمة المرور > و
    < اسم المستخدم > \ المجال هي القيم الخاصة ببيانات الاعتماد للمستخدم الذي قام بالوصول إلى
    < تيكستفيلينامي > ملف على الكمبيوتر البعيد.
  10. في بنية القائمة، انقر فوق إنشاء حلول.
  11. في القائمة " تصحيح "، انقر فوق
    ابدأ. تتلقى رسالة نجاح في المستعرض.
العودة إلى أعلى

الحالة


يعتبر هذا السلوك حسب التصميم.

مزيد من المعلومات


خطوات إعادة إنشاء المشكلة

في هذه الخطوات، يمكنك الكتابة إلى ملف نصي موجود على كمبيوتر آخر في نفس الشبكة. يتم تأمين هذا الملف النصي من الوصول إلى من خلال أجهزة كمبيوتر أخرى في شبكة الاتصال.
  1. بدء تشغيل Microsoft Visual Studio.NET
  2. في القائمة ملف ، أشر إلى
    جديد، ثم انقر فوق المشروع. يظهر مربع الحوار مشروع جديد .
  3. ضمن أنواع المشروع، انقر فوق مشاريع Visual Basic.
  4. ضمن قوالب، انقر فوق تطبيق ويب ASP.NET.
  5. انقر فوق موافق.
  6. في "مستكشف الحلول"، انقر بالزر الأيمن
    WebForm1.aspx الملفات ومن ثم انقر فوق عرض التعليمات البرمجية.
  7. أضف التعليمات البرمجية التالية أعلى الملف Webform1.aspx.vb.
    Imports System.IO
    Imports System.Security
  8. تحديد موقع أسلوب Page_Load .
  9. قم بلصق التعليمة البرمجية التالية في أسلوب Page_Load .
            Try
    Dim fs As New FileStream("\\<ServerName>\<ShareName>\<TextFileName>", FileMode.Append)
    Dim w As New StreamWriter(fs)
    '
    Try
    w.Write(w.NewLine)
    w.WriteLine("Hi how are you")
    w.Close()
    fs.Close()
    Catch
    w.Close()
    fs.Close()
    End Try
    '
    Catch ex As Exception
    Response.Write(ex.Message)
    End Try
    ملاحظة: < اسم الخادم >
    < اسم > المشاركة، و
    < تيكستفيلينامي > عبارة عن عناصر نائبة لتلك القيم في البيئة الخاصة بك.
  10. في بنية القائمة، انقر فوق إنشاء حلول.
  11. في القائمة " تصحيح "، انقر فوق
    ابدأ.
قد تظهر رسالة الخطأ المذكورة في قسم "الأعراض".

المراجع


للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":
معلومات 306158 : تنفيذ الانتحال في أحد تطبيقات ASP.NET

معلومات 306590 : نظرة عامة حول أمان ASP.NET

لمزيد من المعلومات، قم بزيارة مواقع ويب شبكة مطوري Microsoft (MSDN) التالية: