2010-10-22 16 views
5
Azure संग्रहण खाते से कनेक्ट कर रहा

मेरे 'LocalClient' ऐप्लिकेशन एक HTTP प्रॉक्सी सर्वर के पीछे एक कंपनी के लैन (आईएसए) में है। पहला एज़ूर एपीआई कॉल मैं करता हूं - CloudQueue.CreateIfNotExist() - अपवाद का कारण बनता है: (407) प्रॉक्सी प्रमाणीकरण आवश्यक है। मैं निम्नलिखित बातें करने की कोशिश की:प्रॉक्सी सर्वर के माध्यम से

  • जोड़ा गया app.config को <System.Net> defaultProxy तत्व है, लेकिन यह काम किया जाना प्रतीत नहीं होता है (संदर्भ: http://geekswithblogs.net/mnf/archive/2006/03/08/71663.aspx)।
  • मैंने 'आईएसए सर्वर के लिए माइक्रोसॉफ्ट फ़ायरवॉल क्लाइंट' को कॉन्फ़िगर किया, लेकिन इससे कोई मदद नहीं मिली।
  • यहां सुझाए गए कस्टम प्रॉक्सी हैंडलर का उपयोग किया गया: http://dunnry.com/blog/2010/01/25/SupportingBasicAuthProxies.aspx। मैं यह काम नहीं कर पा रहा हूं - कॉन्फ़िगरेशन प्रारंभिक अपवाद प्राप्त करना।

MSDN के अनुसार, एक HTTP प्रॉक्सी सर्वर केवल विकास भंडारण के मामले में कनेक्शन स्ट्रिंग में निर्दिष्ट किया जा सकता (http://msdn.microsoft.com/en-us/library/ee758697.aspx देखें):
UseDevelopmentStorage=true;DevelopmentStorageProxyUri= http://myProxyUri

वहाँ किसी भी तरह से के माध्यम से Azure संग्रहण से कनेक्ट करने के है एक प्रॉक्सी सर्वर?

उत्तर

3

कस्टम प्रॉक्सी समाधान (तीसरी चीज़ जो मैंने अपने मूल प्रश्न में उल्लिखित कोशिश की) पूरी तरह से काम किया। गलती मैं पहले कर रहा था तत्व <configuration> की शुरुआत में app.config में आवश्यक नहीं था। ऐसा करने पर, here दिए गए कस्टम प्रॉक्सी समाधान ने मेरी समस्या हल की।

7

मैं वास्तव में पाया गया कि कस्टम प्रॉक्सी समाधान की आवश्यकता नहीं थी।

जोड़ा जा रहा है मेरे लिए चाल (बस </configuration> से पहले) app.config के लिए निम्न था:

<system.net> 
<defaultProxy enabled="true" useDefaultCredentials="true"> 
<proxy usesystemdefault="true" /> 
</defaultProxy> 
</system.net> 
+0

हाँ, कि ज्यादातर मामलों के लिए काम करना चाहिए, मुझे लगता है करने के लिए। मैंने भी कोशिश की थी। लेकिन मेरे मामले में, प्रॉक्सी सर्वर (स्क्विड) डोमेन के बिना उपयोगकर्ता नाम की उम्मीद है। जबकि लॉग इन यूजरनेम को भेजा जा रहा है ('useDefaultCredentials' सेटिंग के अनुसार) \ प्रारूप में था। तो यह प्रमाणित नहीं होगा। – amolbk

+0

धन्यवाद, आपके समाधान ने मेरी मदद की! – codebot

+0

यह मेरे लिए भी काम करता था (जब मैं किसी टेबल पर किसी भी ऑपरेशन करने का प्रयास करता था तो मेरा आवेदन लटक रहा था)। – Adam

0

के द्वारा प्रॉक्सी पारित तो नीचे की तरह इस्तेमाल करें, यह उम्मीद के रूप में काम करता है और एक ही कर दिया गया है का परीक्षण किया।

public class AzureUpload { 

    // Define the connection-string with your values 
    /*public static final String storageConnectionString = 
     "DefaultEndpointsProtocol=http;" + 
     "AccountName=your_storage_account;" + 
     "AccountKey=your_storage_account_key";*/ 
    public static final String storageConnectionString = 
      "DefaultEndpointsProtocol=http;" + 
      "AccountName=test2rdrhgf62;" + 
      "AccountKey=1gy3lpE7Du1j5ljKiupjhgjghjcbfgTGhbntjnRfr9Yi6GUQqVMQqGxd7/YThisv/OVVLfIOv9kQ=="; 

    // Define the path to a local file. 
    static final String filePath = "D:\\Project\\Supporting Files\\Jar's\\Azure\\azure-storage-1.2.0.jar"; 
    static final String file_Path = "D:\\Project\\Healthcare\\Azcopy_To_Azure\\data"; 

    public static void main(String[] args) { 
     try 
     { 
      // Retrieve storage account from connection-string. 
      //String storageConnectionString = RoleEnvironment.getConfigurationSettings().get("StorageConnectionString"); 
      //Proxy httpProxy = new Proxy(Proxy.Type.HTTP,new InetSocketAddress("132.186.192.234",8080)); 
      System.setProperty("http.proxyHost", "102.122.15.234"); 
      System.setProperty("http.proxyPort", "80"); 
      System.setProperty("https.proxyUser", "ad001\\empid001"); 
      System.setProperty("https.proxyPassword", "pass!1"); 
      // Retrieve storage account from connection-string. 
      CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString); 

      // Create the blob client. 
      CloudBlobClient blobClient = storageAccount.createCloudBlobClient(); 


      // Get a reference to a container. 
      // The container name must be lower case 
      CloudBlobContainer container = blobClient.getContainerReference("rpmsdatafromhospital"); 

      // Create the container if it does not exist. 
      container.createIfNotExists(); 

      // Create a permissions object. 
      BlobContainerPermissions containerPermissions = new BlobContainerPermissions(); 

      // Include public access in the permissions object. 
      containerPermissions.setPublicAccess(BlobContainerPublicAccessType.CONTAINER); 

      // Set the permissions on the container. 
      container.uploadPermissions(containerPermissions); 

      // Create or overwrite the new file to blob with contents from a local file. 
      /*CloudBlockBlob blob = container.getBlockBlobReference("azure-storage-1.2.0.jar"); 
      File source = new File(filePath); 
      blob.upload(new FileInputStream(source), source.length());*/ 

      String envFilePath = System.getenv("AZURE_FILE_PATH"); 

      //upload list of files/directory to blob storage 
      File folder = new File(envFilePath); 
      File[] listOfFiles = folder.listFiles(); 

      for (int i = 0; i < listOfFiles.length; i++) { 
       if (listOfFiles[i].isFile()) { 
       System.out.println("File " + listOfFiles[i].getName()); 

       CloudBlockBlob blob = container.getBlockBlobReference(listOfFiles[i].getName()); 
       File source = new File(envFilePath+"\\"+listOfFiles[i].getName()); 
       blob.upload(new FileInputStream(source), source.length()); 
       System.out.println("File " + listOfFiles[i].getName()+ " upload successful"); 

       } 
       //directory upload 
       /*else if (listOfFiles[i].isDirectory()) { 
       System.out.println("Directory " + listOfFiles[i].getName()); 

       CloudBlockBlob blob = container.getBlockBlobReference(listOfFiles[i].getName()); 
       File source = new File(file_Path+"\\"+listOfFiles[i].getName()); 
       blob.upload(new FileInputStream(source), source.length()); 
       }*/ 
      } 

     }catch (Exception e) 
     { 
      // Output the stack trace. 
      e.printStackTrace(); 
     } 
    } 
} 

नेट या सी # तो नीचे दिए गए कोड को जोड़ने कृपया "App.config"

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 

    <system.net> 
    <defaultProxy enabled="true" useDefaultCredentials="true"> 
     <proxy usesystemdefault="true" /> 
    </defaultProxy> 
    </system.net> 

</configuration> 
संबंधित मुद्दे