2010-05-26 12 views
5

का उपयोग कर डब्ल्यूसीएफ वेब सेवा क्लाइंट मैंने एक छोटा सी # फॉर्म एप्लिकेशन विकसित किया है जो एक वेब सेवा कहता है। सबकुछ अच्छी तरह से काम करता है लेकिन मुझे राज्य रखने और ऐसा करने की आवश्यकता है कि अगर मुझे गलत नहीं लगता है तो मुझे कुकी कंटनर का उपयोग करने की आवश्यकता है।एक कुकी कंटनर

मैं अपने प्रोजेक्ट की "सेवा संदर्भ जोड़ें" मेनू का उपयोग करके सेवा संदर्भ बनाया है और सब कुछ अच्छी तरह से काम किया। लेकिन मुझे नहीं पता कि बनाए गए क्लाइंट पर कुकी मैनेजर कैसे जोड़ना है।

मैंने पाया कुछ उदाहरण दिए गए नमूने दिखा रहे थे की तरह:

serviceClient.CookieContainer=new CookieContainer() 

लेकिन यह मामला नहीं है। मेरे सेवा क्लाइंट में ऐसी संपत्ति नहीं है। मैं वैसे भी विजुअल स्टूडियो 2010 बीटा पर मुकदमा कर रहा हूं।

अग्रिम धन्यवाद!

यह वह जगह है परिणामस्वरूप ServiceReference (जो स्वचालित रूप से बनाया गया था):

//------------------------------------------------------------------------------ 

// // यह कोड के लिए एक उपकरण के द्वारा उत्पन्न किया गया था। // रनटाइम संस्करण: 4.0.30128.1 // // इस फ़ाइल में किए गए परिवर्तन गलत व्यवहार का कारण हो सकता है और अगर // कोड पुनर्जीवित कर रहा है खो जाएगा। // // -------------------------------------------- ----------------------------------

नाम स्थान WSClient.SecurityServiceReference {

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ServiceModel.ServiceContractAttribute(Namespace="http://max/", ConfigurationName="SecurityServiceReference.SecurityService")] 
public interface SecurityService { 

    // CODEGEN: Generating message contract since element name return from namespace is not marked nillable 
    [System.ServiceModel.OperationContractAttribute(Action="http://max/SecurityService/nextValRequest", ReplyAction="http://max/SecurityService/nextValResponse")] 
    [System.ServiceModel.TransactionFlowAttribute(System.ServiceModel.TransactionFlowOption.Allowed)] 
    WSClient.SecurityServiceReference.nextValResponse nextVal(WSClient.SecurityServiceReference.nextValRequest request); 

    // CODEGEN: Generating message contract since element name return from namespace is not marked nillable 
    [System.ServiceModel.OperationContractAttribute(Action="http://max/SecurityService/reportSessionIDRequest", ReplyAction="http://max/SecurityService/reportSessionIDResponse")] 
    [System.ServiceModel.TransactionFlowAttribute(System.ServiceModel.TransactionFlowOption.Allowed)] 
    WSClient.SecurityServiceReference.reportSessionIDResponse reportSessionID(WSClient.SecurityServiceReference.reportSessionIDRequest request); 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)] 
public partial class nextValRequest { 

    [System.ServiceModel.MessageBodyMemberAttribute(Name="nextVal", Namespace="http://max/", Order=0)] 
    public WSClient.SecurityServiceReference.nextValRequestBody Body; 

    public nextValRequest() { 
    } 

    public nextValRequest(WSClient.SecurityServiceReference.nextValRequestBody Body) { 
     this.Body = Body; 
    } 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.Runtime.Serialization.DataContractAttribute()] 
public partial class nextValRequestBody { 

    public nextValRequestBody() { 
    } 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)] 
public partial class nextValResponse { 

    [System.ServiceModel.MessageBodyMemberAttribute(Name="nextValResponse", Namespace="http://max/", Order=0)] 
    public WSClient.SecurityServiceReference.nextValResponseBody Body; 

    public nextValResponse() { 
    } 

    public nextValResponse(WSClient.SecurityServiceReference.nextValResponseBody Body) { 
     this.Body = Body; 
    } 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.Runtime.Serialization.DataContractAttribute(Namespace="")] 
public partial class nextValResponseBody { 

    [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=0)] 
    public string @return; 

    public nextValResponseBody() { 
    } 

    public nextValResponseBody(string @return) { 
     [email protected] = @return; 
    } 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)] 
public partial class reportSessionIDRequest { 

    [System.ServiceModel.MessageBodyMemberAttribute(Name="reportSessionID", Namespace="http://max/", Order=0)] 
    public WSClient.SecurityServiceReference.reportSessionIDRequestBody Body; 

    public reportSessionIDRequest() { 
    } 

    public reportSessionIDRequest(WSClient.SecurityServiceReference.reportSessionIDRequestBody Body) { 
     this.Body = Body; 
    } 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.Runtime.Serialization.DataContractAttribute()] 
public partial class reportSessionIDRequestBody { 

    public reportSessionIDRequestBody() { 
    } 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)] 
public partial class reportSessionIDResponse { 

    [System.ServiceModel.MessageBodyMemberAttribute(Name="reportSessionIDResponse", Namespace="http://max/", Order=0)] 
    public WSClient.SecurityServiceReference.reportSessionIDResponseBody Body; 

    public reportSessionIDResponse() { 
    } 

    public reportSessionIDResponse(WSClient.SecurityServiceReference.reportSessionIDResponseBody Body) { 
     this.Body = Body; 
    } 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
[System.Runtime.Serialization.DataContractAttribute(Namespace="")] 
public partial class reportSessionIDResponseBody { 

    [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=0)] 
    public string @return; 

    public reportSessionIDResponseBody() { 
    } 

    public reportSessionIDResponseBody(string @return) { 
     [email protected] = @return; 
    } 
} 

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
public interface SecurityServiceChannel : WSClient.SecurityServiceReference.SecurityService, System.ServiceModel.IClientChannel { 
} 

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
public partial class SecurityServiceClient : System.ServiceModel.ClientBase<WSClient.SecurityServiceReference.SecurityService>, WSClient.SecurityServiceReference.SecurityService { 

    public SecurityServiceClient() { 
    } 

    public SecurityServiceClient(string endpointConfigurationName) : 
      base(endpointConfigurationName) { 
    } 

    public SecurityServiceClient(string endpointConfigurationName, string remoteAddress) : 
      base(endpointConfigurationName, remoteAddress) { 
    } 

    public SecurityServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
      base(endpointConfigurationName, remoteAddress) { 
    } 

    public SecurityServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
      base(binding, remoteAddress) { 
    } 

    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
    WSClient.SecurityServiceReference.nextValResponse WSClient.SecurityServiceReference.SecurityService.nextVal(WSClient.SecurityServiceReference.nextValRequest request) { 
     return base.Channel.nextVal(request); 
    } 

    public string nextVal() { 
     WSClient.SecurityServiceReference.nextValRequest inValue = new WSClient.SecurityServiceReference.nextValRequest(); 
     inValue.Body = new WSClient.SecurityServiceReference.nextValRequestBody(); 
     WSClient.SecurityServiceReference.nextValResponse retVal = ((WSClient.SecurityServiceReference.SecurityService)(this)).nextVal(inValue); 
     return [email protected]; 
    } 

    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
    WSClient.SecurityServiceReference.reportSessionIDResponse WSClient.SecurityServiceReference.SecurityService.reportSessionID(WSClient.SecurityServiceReference.reportSessionIDRequest request) { 
     return base.Channel.reportSessionID(request); 
    } 

    public string reportSessionID() { 
     WSClient.SecurityServiceReference.reportSessionIDRequest inValue = new WSClient.SecurityServiceReference.reportSessionIDRequest(); 
     inValue.Body = new WSClient.SecurityServiceReference.reportSessionIDRequestBody(); 
     WSClient.SecurityServiceReference.reportSessionIDResponse retVal = ((WSClient.SecurityServiceReference.SecurityService)(this)).reportSessionID(inValue); 
     return [email protected]; 
    } 
} 

}

+0

मेरी सेवा CookieContainer संपत्ति है करने के लिए बनाया ग्राहक के लिए आदेश में मैं एक WebReference (.NET विज़ार्ड प्रपत्र के तल पर संगतता शीर्षक पर 2.0 देखो) बनाने के लिए किया था, लेकिन मैं VS2010 डिफ़ॉल्ट के साथ यह सब करने की ज़रूरत मार्ग। कोई विचार? – DaTroop

उत्तर

-3

WCF का उपयोग कर बनाई में यह सेवा संदर्भ और WCF मतलब यह है कि इन सेवाओं वेब सेवा या दूरस्थ या MSMQ का उपयोग कर किया जा सकता है या तो संचार की वास्तविक मध्यम से स्वतंत्र है। और रिमोटिंग और एमएसएमक्यू में कुकीज़ की अवधारणा नहीं है।

बेहतर Wsdl.exe का उपयोग कर अपने वेब सेवा संदर्भ बना सकते हैं और अपनी परियोजना में जिसके परिणामस्वरूप वर्ग जोड़ें। मैंने भी यही किया।

+0

मैंने पहले ही ऐसा कर लिया है! लेकिन स्पष्टीकरण के लिए धन्यवाद! – DaTroop

+0

-1: खराब सुझाव। आप सुझाव दे रहे हैं कि वह वर्तमान में सीखने के लिए अतीत में वापस जाएं। –

0

उद्धृत: यदि कोई XML वेब सेवा विधि सत्र स्थिति का उपयोग करती है, तो प्रतिक्रिया शीर्षलेख में एक्सएमएल वेब सेवा क्लाइंट को एक कुकी वापस भेज दी जाती है जो विशिष्ट रूप से उस XML वेब सेवा क्लाइंट के सत्र की पहचान करता है। क्लाइंट के लिए सत्र स्थिति बनाए रखने के लिए किसी XML वेब सेवा के लिए, क्लाइंट को कुकी को स्टोर करना होगा।

अधिक जानकारी: http://msdn.microsoft.com/en-us/library/system.web.services.protocols.httpwebclientprotocol.cookiecontainer.aspx

+0

आप पुराने एएसएमएक्स वेब सेवाओं पर जानकारी देख रहे हैं। जब तक आपको नहीं करना है तब तक उनका उपयोग न करें। –

12

जब तुम सिर्फ बंधन पर कुकीज़ सक्षम कर सकते हैं क्यों, पुरानी प्रौद्योगिकी पर वापस लौटने?

http://megakemp.wordpress.com/2009/02/06/managing-shared-cookies-in-wcf/

+1

एक और केवल कार्यात्मक संलयन मैंने पाया है और यह बहुत अच्छा काम करता है। – David

+0

लिंक का संदेश संक्षेप में (यह काम करता है): बाइंडिंग। AllowCookies = true; (var webServiceProxy = new ReportExecutionServiceSoapClient (बाध्यकारी, समापन बिंदु)) {} –

+0

चेतावनी के एक शब्द के रूप में .. लिंक में केंद्रीकृत प्रबंधन समाधान कुकीज़ का एक बहुत ही सरल दृश्य लेता है और 3 अलग-अलग कुकी आरएफसी से मेल नहीं खाता है (210 9, 2 9 65, 6265) इसलिए आप जिस सर्वर से कनेक्ट कर रहे हैं उसकी आवश्यकताओं को समझना महत्वपूर्ण है। उदाहरण के लिए मैंने एक सर्वर देखा है जो 210 9 के अनुसार कई अल्पविराम से अलग कुकीज़ भेजता है लेकिन केवल उन लोगों को शामिल करता है जिन्हें आप अपडेट करना चाहते हैं। –

संबंधित मुद्दे