2012-07-18 19 views
5

मैं कैसे विंडोज Azure आप एक आवेदन के विन्यास भिन्न हो जब आप कोई चारा नहीं web.config (या app.config) में विन्यास सेटिंग्स धारण करने के लिए प्राप्त हो जाता है नहीं दिख रहा।Azure भूमिका विन्यास प्रबंधन

उदाहरण के लिए ...

अक्सर परियोजनाओं कि web.config का गहन उपयोग करता एक 3 पार्टी पुस्तकालय का उपयोग करना होगा। Web.config के उपयोग में कनेक्शन स्ट्रिंग, ऐप सेटिंग्स या कस्टम कॉन्फ़िगरेशन अनुभाग शामिल हो सकते हैं। इसका एक अच्छा उदाहरण ELMAH है।

  • मुझे अद्यतन करने के लिए या अलग-अलग हो दूरदराज के उपयोग सक्षम है या नहीं के लिए कोई तरीका नहीं है:

    <configuration> 
    
        <configSections> 
        <sectionGroup name="elmah"> 
         <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" /> 
         <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> 
        </sectionGroup> 
        </configSections> 
    
        <connectionStrings> 
        <add 
         name="MyElmahDatabase" 
         providerName="System.Data.SqlClient" 
         connectionString="Server=tcp:myServer.database.windows.net,1433;Database=myDB;User [email protected];Password=password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" /> 
        </connectionStrings> 
    
        <elmah> 
        <security allowRemoteAccess="1" /> 
        <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="MyElmahDatabase" /> 
        </elmah> 
    
    </configuration> 
    

    यहाँ समस्याओं के एक जोड़े हैं: ELMAH के लिए एक web.config फ़ाइल ऐसा दिखाई दे सकता सेवा विन्यास के बीच।

  • मुझे अद्यतन करने के लिए या सेवा विन्यास के बीच ELMAH कनेक्शन स्ट्रिंग अलग-अलग हो के लिए कोई तरीका नहीं है।

इसका कारण यह है web.config के रूप में .cspkg फाइल में है और ELMAH सेवा विन्यास सेटिंग्स (जो एक ही रास्ता मैं सेवा विन्यास के बीच विन्यास सेटिंग्स भिन्न हो सकते हैं कर रहे हैं) को देखने नहीं होगा पैक किया जाता है।

मैं कई अन्य उदाहरण के बारे में सोच सकते हैं, जहां यह एक समस्या है ...

  • किसी भी डेटा का उपयोग चौखटे कि कनेक्शन तार खंड पर सीधे देखो।
  • कोई भी कस्टम कॉन्फ़िगरेशन सेटिंग्स बनाने की आवश्यकता है।

... नाम सिर्फ दो करने के लिए।

क्या मुझे कुछ याद आ रहा है या यह विंडोज़ एज़ूर द्वारा प्रदान किए गए कॉन्फ़िगरेशन प्रबंधन में एक महत्वपूर्ण अंतर है?

संपादित

जवाब और नीचे टिप्पणी से

, ऐसा लगता है कुछ इस तरह है कि अच्छी तरह से समर्थित नहीं है। मुझे लगता है कि विभिन्न कॉन्फ़िगरेशन प्रोफाइल का समर्थन करने के लिए एकाधिक समाधान निर्माण कॉन्फ़िगरेशन प्रबंधित करना बहुत कमजोर समाधान है। मुझे आवश्यक प्रत्येक कॉन्फ़िगरेशन प्रोफ़ाइल के समाधान को पुनर्निर्माण नहीं करना चाहिए (संभवतः कुछ ही होंगे)। संकलन विन्यास के बराबर नहीं है।

मैं अगर वहाँ के रूप में यह सिर्फ एक ज़िप फ़ाइल है .cspkg फ़ाइल को संशोधित करने के लिए एक तरीका था सोच रहा था। this दस्तावेज के अनुसार आप लिनक्स पर कर सकते हैं।

मैं .cspkg फ़ाइल में प्रकट को देखा है और यह इस तरह दिखता है:

<PackageManifest version="2"> 
    <Encryption keytype="1" /> 
    <Contents hashtype="1"> 
    <Item name="MyApp.Web.UI_<GUID>.cssx" hash="AED69299C5F89E060876BC16BD3D6DE5130F6E62FFD2B752BAF293435339B7E2" uri="/MyApp.Web.UI_<GUID>.cssx" /> 
    <Item name="MyApp.Web.Services_<GUID>.cssx" hash="7AC81AFF642E4345173C8470C32A41118A4E3CFD4185B82D0ADA44B71057192D" uri="/MyApp.Web.Services_<GUID>.cssx" /> 
    <Item name="SMPackage_<GUID>.csmx" hash="B5E6B83B62AF64C7C11CAC1A394ABBF15D7DB7667A773C5284CE5BE95C5834E9" uri="/SMPackage_<GUID>.csmx" /> 
    <Item name="SDPackage_<GUID>.csdx" hash="F34B7C02A551D82BAD96881E2DA9447D0014D49B47CCB3840475BDC575234A7D" uri="/SDPackage_<GUID>.csdx" /> 
    <Item name="NamedStreamPackage_<GUID>.csnsx" hash="FA2B5829FF5D9B2D69DCDDB0E5BDEE6B8B0BC09FFBF37DAEEE41CF3F3F4D0132" uri="/NamedStreamPackage_<GUID>.csnsx" /> 
    </Contents> 
    <NamedStreams> 
    <Stream name="RequiredFeatures/MyApp.Web.Services/1.0" /> 
    <Stream name="RequiredFeatures/MyApp.Web.UI/1.0" /> 
    <Stream name="SupportData/MyApp.Web.Services/1.0" /> 
    <Stream name="SupportData/MyApp.Web.UI/1.0" /> 
    </NamedStreams> 
</PackageManifest> 

दुर्भाग्य से, अगर मैं फिर से गणना अपरिवर्तित "MyApp.Web.UI_.cssx" के हैश फ़ाइल, मेरा हैश मैनिफेस्ट में से एक से अलग है।प्रकट से

हैश: AED69299C5F89E060876BC16BD3D6DE5130F6E62FFD2B752BAF293435339B7E2

मेरे परिकलित हैश: E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855

ध्यान दें कि मैं अभी तक फाइल नहीं बदला है, तो हैश ही होना चाहिए।

यह सुझाव देता है कि मैं इसे गलत गणना कर रहा हूं।

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (FileStream fs = new FileStream(args[0], FileMode.Open)) 
     { 
      ComputeHash(new SHA256Managed(), fs); 
     } 
    } 

    private static void ComputeHash(HashAlgorithm hashAlgorithm, Stream stream) 
    { 
     byte[] hash = hashAlgorithm.ComputeHash(stream); 
     string hashString = BitConverter.ToString(hash); 
     Console.WriteLine(hashString.Replace("-", string.Empty)); 
     Console.WriteLine(); 
    } 
} 

ऊपर दस्तावेज़ीकरण लिंक, यह हैश फिर से गणना (लिनक्स पर वैसे भी) के लिए सीधा है पता चलता है: मेरे विधि इस प्रकार थी।

क्या किसी को पता है कि हैश की पुन: गणना कैसे करें?

+0

आप अपने पैकेज के लिए किसी भी configurables के लिए फ़ाइलों .cscfg उपयोग कर सकते हैं डाइजेस्ट मिल सकती है। –

+0

यह काम नहीं करेगा - ELMAH (और अन्य ढांचे) .cscfg में कॉन्फ़िगरेशन डेटा को नहीं देख पाएंगे। –

+0

वैसे जहां तक ​​मेरा ज्ञान जाता है, एज़ूर पैकेज के लिए कॉन्फ़िगरेशन की केवल संभावित विधि .cscfg फ़ाइलें है। ELMAH जैसे ढांचे के लिए आपको गतिशील रूप से कॉन्फ़िगरेशन बदलने जैसी वर्कअराउंड मिलनी पड़ सकती है। लेकिन मुझे लगता है कि स्टैक ओवरफ्लो पर एज़ूर के कई विशेषज्ञ हैं जिनके पास प्रस्ताव देने के लिए बेहतर जवाब हो सकता है। यह भी एक बहुत ही रोचक और महत्वपूर्ण सवाल है। –

उत्तर

0

मेरे पास आपके वेब.कॉन्फिग में आइटम हैं जो आप इसे बनाने के तरीके के आधार पर बदलना चाहते हैं, एक ऐसा समाधान है जो Azure के बाहर है जिसका आप उपयोग कर सकते हैं। आप Web.config transforms का उपयोग कर सकते हैं। ये परिवर्तन आपके निर्माण कॉन्फ़िगरेशन से बंधे हैं, आपकी सेवा कॉन्फ़िगरेशन नहीं, लेकिन आपकी सेवा कॉन्फ़िगरेशन संभवतः आपके निर्माण कॉन्फ़िगरेशन से निकटता से बंधे हैं (... Local.csfg -> डीबग, ... Cloud.csfg -> रिलीज़)। यदि डिफ़ॉल्ट बिल्ड कॉन्फ़िगरेशन आपके लिए काम नहीं करते हैं, तो बस अपनी जरूरतों को बनाएं।

आप सेवा कॉन्फ़िगरेशन प्रति अलग सेवा परिभाषाओं का उपयोग करना चाहते हैं, तो यह यूआई द्वारा समर्थित नहीं है, लेकिन आप mess around with the build process to make it work

+0

वह तकनीकी रूप से काम कर सकता है लेकिन मुझे प्रत्येक वातावरण के लिए बिल्ड कॉन्फ़िगरेशन बनाए रखना शुरू करना होगा। यह सूची लंबी हो सकती है (देव, एकीकरण, सिस्टम टेस्ट, यूएटी, उत्पादन) और प्रत्येक अतिरिक्त बिल्ड कॉन्फ़िगरेशन बनाया जाना चाहिए जो बिल्ड समय में जोड़ता है। मैं एक डीबग बिल्ड और रिलीज बिल्ड करना चाहता हूं और उनमें से किसी भी पर्यावरण को तैनात करने में सक्षम हूं। –

+0

चाहे आप किस समाधान का उपयोग करते हैं, भले ही आप प्रत्येक पर्यावरण के लिए एक अलग वेब.कॉन्फिग चाहते हैं, आपको वेब वातावरण को पैकेज के हिस्से के रूप में शामिल किया जाना चाहिए। एक बार बनाए गए पैकेज को बदला नहीं जा सकता है। – knightpfhor

+0

मुझे यकीन नहीं है कि पूरी तरह से सच है - "डीबग" बिल्ड कॉन्फ़िगरेशन के तहत मेरे पास सेवा कॉन्फ़िगरेशन की "n" संख्या हो सकती है। डिफ़ॉल्ट रूप से ये "स्थानीय" और "क्लाउड" होते हैं, अगर मैं "स्थानीय", "क्लाउड-इंटीग्रेशन", "क्लाउड-सिस्टमटेस्ट", "क्लाउड-यूएटी" आदि प्राप्त कर सकता हूं, और यह कि मैं कॉन्फ़िगरेशन फ़ाइलों को बदल सकता हूं उन सेवा विन्यासों में से प्रत्येक के लिए।मुझे नहीं लगता कि मुझे अतिरिक्त समाधान प्रोफाइल का सामना करने के लिए पूरे समाधान का पुनर्निर्माण क्यों करना चाहिए - संकलन कॉन्फ़िगरेशन के बराबर नहीं है। –

2

पासिंग कर सकते हैं byte[] अधिभार का उपयोग कर की तुलना में StreamComputeHash() करने के लिए एक एक अलग हैश के साथ समाप्त होता है । मुझे नहीं पता क्यों।

की तरह कुछ का प्रयास करें:

private static void ComputeHash(HashAlgorithm hashAlgorithm, Stream stream) 
{ 
    BinaryReader reader = new BinaryReader(stream) 
    byte[] hash = hashAlgorithm.ComputeHash(reader.ReadBytes((int)stream.length)); 
    string hashString = BitConverter.ToString(hash); 
    Console.WriteLine(hashString.Replace("-", string.Empty)); 
    Console.WriteLine(); 
} 

यह आपको हैश आप के बाद कर रहे हैं दे देंगे।

आप शायद पहले से ही पता चला है के रूप में, लिनक्स पर आप के साथ

openssl dgst -sha256 /path/to/file 
संबंधित मुद्दे