2009-04-17 14 views
14

मेरे पास एक डब्ल्यूसीएफ सेवा है जो कई वेब सर्वरों पर आईआईएस के माध्यम से होस्ट की जाती है। मेरे पास एक लॉगिंग विधि है जो डेटाबेस को कॉल लॉग करती है और मैं लॉग ऑन करना चाहता हूं कि कॉल किस सर्वर पर चल रहा है।डब्ल्यूसीएफ: होस्ट आईपी या सर्वर का नाम कैसे प्राप्त करें

क्या कोई जानता है कि मेजबान सर्वर का नाम या आईपी पता कैसे प्राप्त करें जिसे डब्ल्यूसीएफ कॉल निष्पादित कर रहा है?

उत्तर

12

डीएनएस.गेटहोस्टनाम() का उपयोग करें, क्योंकि होस्ट आईपी की तुलना में कंप्यूटर का नाम प्राप्त करना बेहतर है। उस मामले पर विचार करें जब आपके मेजबान कंप्यूटर में एक से अधिक आईपी पते हों, वर्चुअल नेटवर्क कार्ड (वीएमवेयर) है।

1

Dns.GetHostName() मैं सबसे ज्यादा उपयोग करता हूं।

5

यह हमारे लिए काम करता है। सुनिश्चित करें कि आपके पास System.ServiceModel का संदर्भ है। फिर अपने सेवा विधि में निम्न कोड:

var context = System.ServiceModel.OperationContext.Current; 

RemoteEndpointMessageProperty property = (RemoteEndpointMessageProperty)context.IncomingMessageProperties[RemoteEndpointMessageProperty.Name]; 

string externalIP = property.Address; 
+4

यह क्लाइंट आईपी पता है, मेजबान नहीं है। – berdem

0

DNS होस्ट नाम, क्योंकि कई सर्वरों अनेक नामों है काम नहीं करता है axactly करता है और आपको नहीं पता कि जो एक सेवा पर बुलाया गया था। आईआईआरसी, आईआईएस अलग-अलग वेब सेवाओं को कॉल कर सकता है, इस आधार पर कि मेजबान नाम निर्दिष्ट किया गया था जिससे मामला खराब हो गया। का उपयोग करना। अगर आप एक उदाहरण नहीं चला रहे हैं तो यह बहुत अच्छा है, इस मामले में आपके पास हमेशा एक गैर-शून्य संदर्भ वस्तु नहीं होती है, जो उपर्युक्त सभी के लिए मेरा मामला है। अगर किसी के पास कुछ और ठोस है, तो कृपया साझा करें :)

0

आप सर्वर (होस्ट) का वर्तमान आधार पता प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं।

using System.ServiceModel; 

var baseAddress = OperationContext.Current.Host.BaseAddresses[0].Authority; 
संबंधित मुद्दे