2

Wie Verwenden von Microsoft Azure Storage Emulator mit Xamarin.Android? Ich habe Microsoft Azure Storage Emulator und Microsoft Azure Storage Explorer heruntergeladen. Ich habe versucht, Tutorials auf Microsoft-Websites zu folgen, aber ich habe immer noch Probleme mit der Authentifizierung. Als ich während des kostenlosen Probeabonnements Real benutzt habe, hat alles funktioniert.Wie Verwenden von Microsoft Azure Storage Emulator mit Xamarin?

Ich weiß, dass ich SAS-Schlüssel verwenden muss. Aber wenn ich Tabellenspeicher im Speicher-Explorer erzeuge und dann dort SAS erzeuge, ist es immer noch falsch. Vielleicht hat jemand das bereits getan und kann seinen Code oder Schritte einfügen, um die Verbindung mit dem Speicheremulator wiederherzustellen.

const string connectionString = "SharedAccessSignature=sv=2015-04-05&sr=c&sig=91HcGtCMxWM6%2B13mRDH1kej5Wq1a8gRk4WCFd6CeLuk%3D&se=2016-08-01T12%3A16%3A55Z&sp=rwdl;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1"; 

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); 
CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); 
CloudTable table = tableClient.GetTableReference("Test"); 
bool exists = await table.ExistsAsync(); 
if (exists) 
    System.Console.WriteLine("Exists"); 
else 
    System.Console.WriteLine("Doesnt exist"); 

Fehlerdetails:

<RequestResult> 
    <HTTPStatusCode>0</HTTPStatusCode> 
    <HttpStatusMessage /> 
    <TargetLocation>Primary</TargetLocation> 
    <ServiceRequestID /> 
    <ContentMd5 /> 
    <Etag /> 
    <RequestDate /> 
    <StartTime>Sun, 31 Jul 2016 13:43:44 GMT</StartTime> 
    <EndTime>Sun, 31 Jul 2016 13:43:44 GMT</EndTime> 
    <Error></Error> 
    <ExceptionInfo> 
    <Type /> 
    <HResult>-2146233088</HResult> 
    <Message>Error: ConnectFailure (Connection refused)</Message> 
    <Source /> 
    <StackTrace /> 
    <InnerExceptionInfo> 
     <ExceptionInfo> 
     <Type /> 
     <HResult>-2146233079</HResult> 
     <Message>Error: ConnectFailure (Connection refused)</Message> 
     <Source>mscorlib</Source> 
     <StackTrace> at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x0005e] in /Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1005 
    at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (IAsyncResult iar, System.Func`2 endFunction, System.Action`1 endAction, System.Threading.Tasks.Task`1 promise, Boolean requiresSynchronization) [0x00014] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/threading/Tasks/FutureFactory.cs:550 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
    at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult() [0x00000] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:535 
    at System.Net.Http.HttpClientHandler+&lt;SendAsync&gt;c__async0.MoveNext() [0x003d6] in /Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs:372 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
    at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult() [0x00000] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:535 
    at System.Net.Http.HttpClient+&lt;SendAsyncWorker&gt;c__async0.MoveNext() [0x000a9] in /Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs:276 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
    at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult() [0x00000] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 
    at Microsoft.WindowsAzure.Storage.Core.Executor.Executor+&lt;ExecuteAsyncInternal&gt;d__6`1[T].MoveNext() [0x003cf] in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\WindowsRuntime\Core\Executor\Executor.cs:128 </StackTrace> 
     <InnerExceptionInfo> 
      <ExceptionInfo> 
      <Type /> 
      <HResult>-2147467259</HResult> 
      <Message>Connection refused</Message> 
      <Source>System</Source> 
      <StackTrace> at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000cb] in /Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System/System.Net.Sockets/Socket.cs:1313 
    at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0019b] in /Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System/System.Net/WebConnection.cs:195 </StackTrace> 
      </ExceptionInfo> 
     </InnerExceptionInfo> 
     </ExceptionInfo> 
    </InnerExceptionInfo> 
    </ExceptionInfo> 
</RequestResult> 

Vielen Dank für Ihre Zeit.

+0

Können Sie bitte erklären, was Sie mit 'Aber wenn ich Tabellenspeicher im Speicher-Explorer erstellen und dann dort SAS generieren, ist es immer noch falsch? Was ist falsch an der SAS? –

+0

Wenn ich versuche, mit dem SAS-Speicher eine Verbindung herzustellen, bekomme ich eine Ausnahme wegen Verbindungsfehlers – wasilewitz

+0

Ich sehe. Können Sie Ihr SAS-Token und auch den Code für die Verbindung zum Speicher mit diesem SAS-Token teilen? –

Antwort

0

Ich glaube, dass Sie diesen Fehler erhalten, weil Sie diesen Code in einem Emulator ausführen. Da die IP-Adresse Ihres Emulators 127.0.0.1 ist, treffen die Anforderungen nicht den Speicheremulator, sondern nur Ihren Geräteemulator. Deshalb erhalten Sie diese Verbindung verweigert Fehler. Bitte beachten Sie diesen Thread für weitere Details: https://forums.xamarin.com/discussion/1199/how-to-make-our-remote-host-127-0-0-1-reachable-from-android-device-monoandroid-using-vs2010.

Ich würde empfehlen, dass Sie ein tatsächliches Cloud-Speicherkonto anstelle von Speicheremulator verwenden, um Ihren Code zu testen. Wenn Sie das tatsächliche Speicherkonto verwenden, verwenden Sie bitte den folgenden Code (offensichtlich ändern Sie die Verbindungszeichenfolge entsprechend). Es sollte funktionieren:

 var connectionString = "http://127.0.0.1/devstoreaccount1/Testowa?st=2015-07-31T11%3A50%3A00Z&se=2017-0‌​8-01T11%3A50%3A00Z&sp=raud&sv=2015-04-05&tn=testowa&sig=UEbinBTgpEGwy1ts0hwmSfELM‌​1lYCBItLHgWpWSgvE4%3D"; 
     CloudTable table = new CloudTable(new Uri(connectionString)); 
     bool exists = await table.ExistsAsync(); 
     if (exists) 
      System.Console.WriteLine("Exists"); 
     else 
      System.Console.WriteLine("Doesnt exist"); 
+0

Ich führe Code auf meinem Gerät aus, nicht im Emulator. Aber zumindest weiß ich jetzt, dass das kein Problem mit SAS ist, sondern eine Verbindung zum Speicheremulator. Vielen Dank für Ihre Zeit :) Sie haben mir wirklich geholfen – wasilewitz

+0

Wenn Sie Gerät, meinen Sie Ihr Telefon oder Ihren Computer? –

+0

Mein Telefon. Via USB-Verbindung – wasilewitz