سؤال

ولدي خدمات WCF. الذي فقد اثنين من الأساليب، مثلا الحصول على وحفظ. أريد أن فضح فقط طريقة الحصول على لطرف ثالث الذي سيتم استهلاك الخدمة في حين ينبغي أن يكون طلبي قادرة على استهلاك كل من الحصول على وحفظ.

هل هناك طريقة لتستهلك طريقة ليس في OperationContract؟ إنني أفكر في التحقق من اسم المضيف للطلب ومنح الوصول فقط إذا كان هذا هو اسم المضيف طلبي.

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

المحلول

لماذا لا ننشئ ServiceContract الثاني يحتوي على كل Get وSet كما OperationContracts؟ ثم هل يمكن تأمين الذي يمكن الحصول على هذا العقد الثاني.

[ServiceContract]
public interface IFoo
{
    [OperationContract]
    void Get();
}

[ServiceContract]
public interface IFooInternal : IFoo
{
    [OperationContract]
    void Set();
}

نصائح أخرى

وهنا هو رمز للتعرف على عنوان IP المضيف:

string GetAddressAsString()
{
           RemoteEndpointMessageProperty clientEndpoint =
                        OperationContext.Current.IncomingMessageProperties[
                        RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;

                    if (clientEndpoint != null)
                    {
                        return String.Format("{0}:{1}", clientEndpoint.Address, clientEndpoint.Port);
                    }
                    return "Failed to identify address";
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top