IIS 7.5 لا يمكن الوصول إلى الملف من التعليمات البرمجية المدارة

StackOverflow https://stackoverflow.com/questions/2594862

  •  25-09-2019
  •  | 
  •  

سؤال

أنا أعمل على مشروع يتم نشره من خادم ويب IIS 7.5. بعد تثبيت تطبيق الأصل (أي إعداد موقع IIS) ، أتمكن من الضغط على عنوان URL لملف التكوين الخاص بتطبيق Click-Once من مربع بعيد.
ومع ذلك ، عندما أحاول أن أفعل نفس الشيء من تطبيقي (وتطبيق كعب الأسعار أدناه) ، أحصل على 401 غير مصرح به.

ما هو الفرق بين ضرب عنوان URL من IE ، ومن تطبيق .NET؟
يحتوي الملف والدليل نفسه على التحكم الكامل للجميع في خادم الويب في الوقت الحالي ، وأنا مسؤول على المربع. نحن نستخدم مصادقة Windows مع NTLM فقط.

شكرا ، بوب

فيما يلي تطبيق COMP الذي ينتج 401 - غير مصرح به عندما يكون على خط Doc.load (). يمكنني ضرب نفس عنوان URL بنجاح من IE وفتح الملف ...

static void Main(string[] args)
    {
        Console.WriteLine("Config Test");
        string filename = "http://dev-rs/myClient/myClickOnce/myApp.config.xml";
        Console.WriteLine(filename);
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);
        Console.WriteLine("Loaded");
        Console.WriteLine("Inner Text : " + doc.InnerText);
    }
هل كانت مفيدة؟

المحلول

حدد المبدأ:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

لا يدعم XMLDOCUMITY تمرير بيانات الاعتماد عند التحميل من عنوان URL. بدلاً من ذلك ، قم بتحميل من دفق WebRequest وقم بتعيين بيانات الاعتماد على الطلب قبل التحميل.

WebRequest request = HttpWebRequest.Create(filename);
request.Credentials = CredentialCache.DefaultCredentials;

XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top