2009-08-25 8 views
14

के अंदर रखा गया है, तो मैं अपने Silverlight एप्लिकेशन के साथ एक डब्ल्यूसीएफ सेवा का उपयोग कर रहा हूं। Wcf सेवा का स्थान ServiceReferences.ClientConfig फ़ाइल में बताया गया है, और उस स्थान पर बदला जाना है जहां एप्लिकेशन इंस्टॉल है।सिल्वरलाइट: सर्विस रेफरेंस कैसे सेट करें। क्लाइंट कॉन्फिग जब xap

हालांकि यह फ़ाइल xap फ़ाइल में शामिल है, और ऐसा कुछ नहीं है जिसे एप्लिकेशन तैनात किए जाने पर आसानी से बदला जा सके। क्या चांदी के आवेदन से डब्ल्यूसीएफ सेवा के संदर्भ में कोई दूसरा तरीका है? या आप xap फ़ाइल में ServiceReferences.ClientConfig को कैसे बदलते हैं?

उत्तर

2

इस ब्लॉग में एक समाधान मिला।

http://www.andybeaulieu.com/Default.aspx?tabid=67&EntryID=132

यहाँ WCF सेवा समाप्ति बिंदु Silverlight आवेदन के स्थान से की जाती है

+0

यह समाधान सबसे अच्छा है जहां तक ​​मेरा संबंध है। कोई अन्य हार्डकोडेड समाधान मेरे लिए काम नहीं करता है। – helios456

8

वहाँ बेहतर तरीके, जो मैं का उपयोग कर के लिए खुला रहा हूँ, लेकिन यह मेरे लिए काम करता हो सकता है और यह सुविधाजनक है।

अपने वेब एप्लिकेशन के वेब.कॉन्फिग में, ऐपसेटिंग में एक चर जोड़ें और बेस यूआरएल स्टोर करें, ध्यान दें कि मैं एसवीसी फ़ाइल का स्थान संग्रहीत नहीं कर रहा हूं, मैं इसे बाद में जोड़ूंगा। ऐसा इसलिए है क्योंकि मेरे पास एकाधिक एसवीसी है जो मैं आमतौर पर इंगित करता हूं। आप इसे अलग-अलग करना चुन सकते हैं।

<appSettings> 
    <add key="ServiceURI" value="http://localhost:64457/"/> 
</appSettings> 

मेरी वेब अनुप्रयोग के वेब पेज में, एक परम InitParms बुलाया जोड़ते हैं, यह आप कुंजी की सूची जोड़ने के लिए अनुमति देता है, इस जोड़ी मूल्यों (अल्पविराम से अलग है कि XAP फ़ाइल द्वारा पढ़ा जाएगा)

<div id="silverlightControlHost"> 
    <object data="data:application/x-silverlight," type="application/x-silverlight-2" 
     width="100%" height="100%" ID="Xaml1" > 
     <param name="InitParams" value="ServiceURI=<%= ConfigurationManager.AppSettings("ServiceURI") %>" /> 

सिल्वरलाइट App.xaml.vb में, एक संसाधन में सभी InitParms लोड या जहां कभी आप चाहते हैं

Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup 
    If e.InitParams IsNot Nothing Then 
     For Each k As Generic.KeyValuePair(Of String, String) In e.InitParams 
      Me.Resources.Add(k.Key, k.Value) 
     Next 
    End If 
मेरी XAML फ़ाइलों में से किसी में

तब मैं कॉन्फ़िगर किया गया यूआरआई के साथ सेवा प्रारंभ कर सकते हैं, मैं कर रहा हूँ है इस

Private Sub InitializeService() 
    Dim uri As String = App.Current.Resources("ServiceURI") 
    If uri Is Nothing OrElse uri = String.Empty Then 
     'if there is no value added in the web.config, I can fallback to default values 
     _client = New ServiceClient 
    Else 
     'Notice I hardcoded the location of the SVC files in the client and append there here, you may choose not to do this 
     Dim uri_withservice As String = uri & "svc/secure/Service.svc" 
     _client = New ServiceClient("CustomBinding_Service", New EndpointAddress(uri_withservice)) 
    End If 
End Sub 
7

बहुत बढ़िया, इन सुझावों के साथ की तरह ethod, मैं प्राप्त करने के लिए मेरी WCF ServiceReferences.ClientConfig डेटा गतिशील, स्टार्टअप पर बदल दिया सेवा यूआरआई web.config से पढ़ने के साथ कामयाब रहे। वीएस -2010 में "web.config ट्रांसफॉर्मेशन" का उपयोग करके यह संभव है।

यहां एक नमूना web.config.debug है, यह दिखाता है कि जब मैं अपनी वेबसाइट के लिए "प्रकाशित" चुनता हूं तो सेवायूरी को कैसे बदला जाता है।

<?xml version="1.0"?> 
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 --> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
    <...> 
    </connectionStrings> 

    <appSettings> 
    <add key="ServiceURI" value="http://my.location.com/myService.svc" 
     xdt:Transform="SetAttributes" xdt:Locator="Match(key)" /> 
    </appSettings> 
</configuration> 

मेरे बेस web.config में मेरे पास स्थानीय सेवा की ओर इशारा करते हुए एक ही कुंजी/मान है। जब भी मैं परीक्षण/उत्पादन के लिए तैनात करता हूं, सेवा सेवा को बदलने के लिए याद रखने की आवश्यकता नहीं है। बढ़िया, मैं थोड़ी देर के लिए इसकी तलाश कर रहा हूं।

2

इस समाधान में सभी अव्यवहारिक समाधान प्रस्तुत किए गए हैं कि आप अपनी कॉन्फ़िगरेशन सेटिंग्स को अनुकूलित करने के लिए अपने एप्लिकेशन को संशोधित करते हैं। यह blog entry ने इसे खींचा।

+0

मुझे यह सबसे अच्छा समाधान माना गया क्योंकि यह एक्सएमएल ट्रांसफॉर्मेशन को प्रतिबिंबित करता है जिसे वेब पर कॉन्फ़िगर किया जा सकता है – Calanus

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