2017-12-27 8 views
0

Ich erhalte die folgende Fehlermeldung, wenn in der Nähe einer Konsole webjob in azurErstes Bad Request Fehler in Azure Tabellen Speicher Insert Operation

Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (400) Bad Request. ---> System.Net.WebException: The remote server returned an error: (400) Bad Request. 
at System.Net.HttpWebRequest.GetResponse() 
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T] 
(RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 677 
--- End of inner exception stack trace --- 
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T] 
(RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 604 
at 
Microsoft.WindowsAzure.Storage.Table.TableOperation.Execute(CloudTableClient client, CloudTable table, TableRequestOptions requestOptions, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Table\TableOperation.cs:line 44 
at Microsoft.WindowsAzure.Storage.Table.CloudTable.Execute(TableOperation operation, TableRequestOptions requestOptions, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Table\CloudTable.cs:line 52 
at pAvg15MinInstantInputWebJob.Avg15MinInstantInputJob.AverageCalculator(DateTime runningDate) in F:\Projects\LogiProjects\ProcessEye\Source\Kent.ProcessEye\pAvg15MinInstantInputWebJob\Avg15MinInstantInputJob.cs:line 246 
Request Information 
RequestID:855533de-0002-0066-2819-7f27ee000000 
RequestDate:Wed, 27 Dec 2017 13:51:21 GMT 
StatusMessage:Bad Request 
ErrorCode:InvalidInput 
ErrorMessage:Bad Request - Error in query syntax. 
RequestId:855533de-0002-0066-2819-7f27ee000000 
Time:2017-12-27T13:51:22.1788418Z 

aber laufe diese Anwendung ausgeführt wird, erfolgreich zu arbeiten.

Hier ist meine Codes

string connectionString1 = ConfigurationManager.ConnectionStrings["AzureWebJobsDashboard"].ConnectionString; 
CloudStorageAccount account1 = CloudStorageAccount.Parse(connectionString1); 
CloudTableClient client1 = account1.CreateCloudTableClient(); 
CloudTable table2 = client1.GetTableReference(pAvg15MinInstantInput); 
var row = new pAvg15MinInstantInputEntity(); 
row.PartitionKey = targetPartitionKey; 
row.RowKey = rowDate.ToString(); 
row.avg = entity.average; 
row.count = entity.count; 
row.date = rowDate; 
row.inputid = entity.inputid; 
row.max = entity.max; 
row.min = entity.min; 
try 
{ 
TableOperation insertOperation = TableOperation.InsertOrReplace(row); 
table2.Execute(insertOperation); 
} 
    catch (Exception ex) 
    { 
    Errorlogger(runningDate, "else ----->" + ex.ToString()); 
    return false; 
    } 

Und die Klasse Entity ist als

public class pAvg15MinInstantInputEntity : TableEntity 
{ 
    public DateTime? date { get; set; } 
    public string inputid { get; set; } 
    public double? min { get; set; } 
    public double? max { get; set; } 
    public double? avg { get; set; } 
    public long? count { get; set; } 
} 

UPDATE folgt

Das Unternehmen Werte sind als

average - 244.1 
count - 3 
date - 2017-12-27 10:15:26 
inputid - 36-i1 
max-244.1 
min - 244.0 
folgt

und der Entity-Klasse ist als

public class ResultModel 
{ 
    public string inputid { get; set; } 
    //public long hour { get; set; } 
    //public long minute { get; set; } 
    public double max { get; set; } 
    public double min { get; set; } 
    public DateTime date { get; set; } 
    public double average { get; set; } 
    public long count { get; set; } 
} 

Alle diese zu lösen Lösung folgt?

+0

„Fehler in Abfragesyntax ". Ihre Eingabe muss sich zwischen lokal und Server unterscheiden. – Crowcoder

+0

Wie passiert das, wenn ich die gleiche Ressource sowohl lokal als auch Server verwende? –

+0

Ich schlage vor, Sie debuggen es. Verwenden Sie VS 2017? Wenn ja, das neueste Update und [siehe diese] (https://www.visualstudio.com/vs/debug-in-azure/) – Crowcoder

Antwort

1

Als Gaurav Mantri erwähnt, dass 400 Fehler in der Regel durch ungültigen Wert verursacht wird. Entsprechend Ihrem gelieferten Wert scheint es, dass alle Werte korrekt sind. außerRowkey. Ich kann es auch reproduzieren, wenn ich den folgenden Code benutze, da er charater '/' enthält.

RowKey = DateTime.Now.ToString(CultureInfo.InvariantCulture); 

In Ihrem Fall könnten Sie den RowKey Wert fix Wert wie "test" es zu testen ändern. Wir könnten auch weitere Informationen über Tisch enitity von Understanding the Table Service Data Model.

Die folgenden Zeichen erhalten nicht in Werte für die PartitionKey erlaubt sind und RowKey Eigenschaften:

Der Schrägstrich (/) Zeichen

Der Backslash() Zeichen

Das Nummernzeichen (#) Zeichen

Das Fragezeichen (?) Zeichen

Steuerzeichen von U + 0000 bis U + 001F, einschließlich:

Die horizontale Lasche (\ t) Zeichen

Der Zeilenvorschub (\ n) Zeichen

Der Wagenrücklauf (\ r) Zeichen

Steuerzeichen von U + 007F zu U + 009F


Aktualisiert:

Jede Lösung, dieses Problem zu beheben?

könnten Sie formatieren die ROWDATE mit Code folgenden

row.RowKey = rowDate.ToString("yyyyMMddHHmmss") 

oder

row.RowKey = rowDate.AddMilliseconds(1).Ticks.ToString() 

Weitere Informationen darüber, wie die Datatime zu formatieren, zu bitte anderen SO thread

+0

Hat nicht funktioniert .. –

+0

Testen Sie mit RowKey mit dem festen Wert "test"? –

+0

Ja. Dann funktioniert es .. –

Verwandte Themen