سؤال

أرغب في استخدام HttPlistener من فئة .NET لاعتراض طلبات بيانات WCF الخاصة بي (WWW-Authenticate "إلى الاستجابة (لمصادقة المستخدم). ولكن يبدو أن httplistener لا يعرض أي طلبات تنتقل إلى خدمة البيانات الخاصة بي. يعمل Httplistner على مسارات مختلفة على ما يرام. مثال:

بادئة httplistner: http: // localhost/somepath/
الأعمال: http: // localhost/somepath/
لا يعمل: http: // localhost/someath/mywcfdataservice

هل من الممكن اعتراض أيضًا طلبات الذهاب إلى خدمة بيانات WCF ذاتية (WebServicehost) مع Httplistner؟
فيما يلي قصاصات الرمز ذات الصلة ...

استضافة WCF DataService:

WebServiceHost dataServiceHost = new WebServiceHost(typeof(MyWCFDataService));
WebHttpBinding binding = new WebHttpBinding();
dataServiceHost.AddServiceEndpoint(typeof(IRequestHandler), binding, 
    "http://localhost/somePath/myWCFDataService");
dataServiceHost.Open();

رئيس HTTP:

HttpListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://localhost/somePath/");
httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
httpListener.Start();

while (true)
{
    HttpListenerContext context = httpListener.GetContext();
    string authorization = context.Request.Headers["Authorization"];

    if (string.IsNullOrEmpty(authorization))
    {
         context.Response.StatusCode = 401;
         context.Response.AddHeader("WWW-Authenticate", "Basic realm=\"myDataService\"");
         context.Response.OutputStream.Close();
         context.Response.Close();
    }
}

هل هناك طريقة أفضل لإجراء مصادقة HTTP الأساسية في خدمات بيانات WCF؟ لا يمكنني أن أكون قادرًا على المصادقة عبر مربع حوار تسجيل الدخول لمتصفح الويب.

شكرا جزيلا،
يهو

هل كانت مفيدة؟

المحلول

أنت تنبح من الشجرة الخاطئة تعبث بالوكالة عبر httplistener. القي نظرة على هذه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top