سؤال

أقوم بتطوير تطبيق يستخدم حتى الآن HttpListener لتوفير خادم http صغير مستقل.ومع ذلك، فقد اكتشفت مؤخرًا أن HttpListener يحتاج إلى التشغيل كمسؤول، وهو أمر لن يكون ممكنًا دائمًا.

ماذا سيكون البديل الأفضل؟أحتاج إلى http GET وPOST، وكلاهما لا يقومان فقط بقراءة/كتابة الملفات على نظام الملفات، بل يحتاجان إلى تشغيل كود .Net مخصص.

لقد أدى بحثي حتى الآن إلى ظهور كاسيني، ولكن بقدر ما أستطيع أن أقول، يجب أن أكتب نسخة مخصصة.هل هناك شيء آخر؟على وجه الخصوص، سيكون شيئًا بنفس واجهة HttpListener، ولكن هذا لا يتطلب امتيازات المسؤول، سيكون أمرًا رائعًا!

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

المحلول

وأحد البدائل التي وجدتها هو href="http://www.codeplex.com/webserver" C # خادم الويب على كود بلاكس.

<ط> "... والمتشعب الخادم مرونة التي يمكن أن تكون جزءا لا يتجزأ في أي تطبيق صافي. انها لديها تصميم وحدات حيث يتم إضافة ميزات استخدام وحدات. كما يدعم خادم REST وجميع الأفعال HTTP ..."

ويحتوي على الدرجة HttpListener أنا وهو كهاتين يشبه System.Net.HttpListener، ولكن أنا لم تستخدم أي واحد منهم بعد ذلك لا يمكن أن تكون معينة.

نصائح أخرى

ويتم تغطية أحد الحلول لذلك عن طريق <لأ href = "https://stackoverflow.com/questions/169904/can-i-listen-on-a-port-using-httplistener-or-other-net-code -on-فيستا دون إعادة "> هذا السؤال الآخر - يمكنك ان تعطي نفسك أذونات لتشغيل HttpListener باعتباره غير المشرف

هل يمكن الحصول على التطبيق لتكون بدأت من ملف الأوامر التي يفرز الأذونات ثم يدير التطبيق الحقيقي.

ومثل تعليق ويل عميد على مشاركتك يقول: هل يمكن تشغيل الأمر netsh التالية:

netsh http add urlacl url=http://+:8346/ user="NTAuthority\Authenticated Users" sddl="D:(A;;GX;;;AU)"

واستبدال على "http: // +: 8346 / '. مع القيمة الخاصة بك، وهذا سوف يسمح لأي مستخدم مصادق لتشغيل خادم الويب عند نقطة النهاية الهدف

بخصوص البيان :

لقد اكتشفت مؤخرًا أن HttpListener يحتاج إلى التشغيل كمسؤول

وهذا ليس صحيحاً تماماً وبعض الإجابات الأخرى تتطرق إلى أحد الأسباب ولكن هناك سبباً آخر:

  1. لاحظت من قبل الملصقات الأخرى:يمكنك منح الأذونات لغير المسؤول.جيد، ولكن ليس رائعا.
  2. يمكنك الاستماع على المضيف المحلي، حتى على المنفذ 80، دون أن تكون مسؤولاً.ملحوظة:أذكر أن "المضيف المحلي" فقط هو الذي يعمل وليس "127.0.0.1"...لذا تأكد من تمرير المضيف المحلي إلى البادئات الخاصة بك. أضف مكالمة.

نحن نشحن أداة داخلية تسمح للمطورين بتشغيل مضيف تطبيق يستند إلى HTTP على أجهزة الكمبيوتر الخاصة بهم واعتقدنا في البداية أن استخدام HttpListener لن يكون ممكنًا بسبب مشكلة المسؤول (أو الأذونات الممنوحة من المسؤول)، ولكن بعد ذلك وجدنا ذلك يعمل المضيف المحلي بشكل جيد دون أن يكون مسؤولاً.إنه نوع من المنطقي:الاستماع خارجيًا أمر "خطير" لكن الاستماع على الجهاز المحلي ليس بنفس الخطورة.

وطيب، بحيث يكون لديك التطبيق سطح المكتب العادية التي تحتاج للسماح بالاتصالات الواردة HTTP - هم - لن يكون جدار حماية Windows قضية

وعلى افتراض لم يكن كذلك، يبدو تقريبا مثل خدمة ويب - هل يمكن أن تذهب في هذا الطريق - كشف عناوين المواقع عبر ذلك؟ وعلى الرغم من معرفتي صافي ليست عميقة بما فيه الكفاية لمعرفة ما إذا كنت لا تزال بحاجة لتشغيل المتشعب الخادم محددة للإجابة على طلبات. Spring.Net عبارة ربما يستحق نظرة .

Nowin هو ليب الكبير الذي يمكن أن تكون متكاملة في Owin كما ServerFactory دون الاعتماد على HttpListener. كانت قادرة على إسقاط في استبدال Microsoft.Owin.Host.HttpListener ليب دون وجود عوائق

لتطبيقات الأساسية. NET يوجد جديد (عبر منصة) الخادم HTTP implemention: <لأ href = "https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/؟view = aspnetcore 2.2 و علامات التبويب = النوافذ # العاسوق "يختلط =" نوفولو noreferrer "> كيستريل .

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