WCF استضافة ذاتيا مع WebServer استضافة ذاتية (httplistener) على نفس المنفذ. ممكن؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق وأحتاج إلى توفير واجهة ويب لها. كنت أفكر في استخدام WCF لتوفير خدمة لواجهة الويب، ومضيفها الذاتي كلاهما مع تطبيقي (لا IIS). الآن، إذا كان هذين الشخصان لا يستخدمان نفس المنفذ، فسوف يشتكي المتصفح من XSS ...

هل هذا ممكن؟ هل هذه فكرة جيدة؟

تعديلبعد بعض التحقيق، تمكنت من عملها.

إليك الرمز المضيف الذاتي WebService:

var serviceHost = new ServiceHost(typeof(CalculatorService));
serviceHost.AddServiceEndpoint(typeof (ICalculator), new WSHttpBinding(), "http://localhost:8000/webservice");
serviceHost.Open();

Console.WriteLine("CalcService is running.");
Console.WriteLine("Press Enter to terminate the service.");
Console.ReadLine();
serviceHost.Close();

وهنا رمز مضيف الويب:

var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8000/webconsole/");
listener.Start();
Console.WriteLine("listening");
while(true)
{
    HttpListenerContext context = listener.GetContext();
    /* ... */
}

بالنسبة إلى Webservice للعمل، كنت بحاجة إلى القيام به هذه

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

المحلول

نعم - يعمل بشكل جيد. http.sys ملخصات الاشياء HTTP التي يستخدمها WCF، وتتيح لعدد تعسفي من العمليات بمشاركة نفس المنفذ طالما أنهم جميعا يستخدمون جميع بادئات مسار مختلفة. أفعل هذا طوال الوقت للسبب بالضبط نفس السبب.

لن يعمل هذا على XP في IIS 5.1 أو مع خادم الويب VS، على الرغم من - فقط في حال كنت ستحاول. إنهم ليسوا http.sys مقرها، لذلك يتوقعون الحصول على موانئهم حصريا. أي شيء آخر، على الرغم من (بما في ذلك XP مع مضيفين 2 WCF)، أنت جيد للذهاب.

نصائح أخرى

يبدو يتوهم، سآخذ لمشاهدة هذا واحد. إذا كان أي شيء آخر يعمل، فيمكنك الاحتفاظ به كمنفذين منفصلين ولكن ربما استخدم وكيل عكسي لفرز نقطة النهاية WCF؟

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