IIS 7.5 لا يمكن الوصول إلى الملف من التعليمات البرمجية المدارة
سؤال
أنا أعمل على مشروع يتم نشره من خادم ويب 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());