سؤال

أنا استخدم HttpListener. ومع ذلك ، أريد فقط معالجة الطلبات التي تأتي محليًا ، وليس من جهاز/خادم آخر.

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

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

المحلول

تحقق مع RemoteEndPoint منشأه إذا كان العنوان البعيد للطلب يساوي 127.0.0.1.

نصائح أخرى

ال HttpListenerRequest لديه خاصية IsLocal والتي يجب أن توفر أيضا هذه المعلومات. ومع ذلك ، فهي تعود false على حاسوبي. التفكير في الكود المصدر ، يبدو أن هذا بسبب IsLocal تستخدم الخاصية الرمز:

    return this.LocalEndPoint.Address == this.RemoteEndPoint.Address;

عندما ينبغي أن يستخدم الكود في (لا يمكن الوصول إليه) InternalIsLocal الممتلكات التي هي:

    return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address);

(يعود هذا التعبير true لوضعي). قد يكون استخدام هذا النهج هو الأفضل بحيث لا يعتمد الرمز الخاص بك على عنوان IPv4 حيث يتم الانتقال إلى IPv6.

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