2015-01-25 4 views
0

나는 잘못된 요청 오류를 내가 코드 줄 실행할 때마다 점점 계속 : 나는 다른 라인을 가지고 그러나MS 푸른 - 잘못된 요청 (400)

A first chance exception of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException' occurred in mscorlib.dll 
Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: The request could not be completed. (Bad Request) 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.<ThrowInvalidResponse>d__18.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.<SendRequestAsync>d__1d.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.<RequestAsync>d__4.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.<ReadAsync>d__b.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.<ReadAsync>d__4.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQueryProvider.<Execute>d__8`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQueryProvider.<Execute>d__3`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceTableQuery`1.<ToListAsync>d__0.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at eventsphere.Utilities.ValidationUtility.<CheckEmailExistsError>d__2.MoveNext() 

: 여기

List<Account> accounts = await App.accountTable.Where(account => account.EmailAddress == email).ToListAsync(); 

오류 메시지입니다 기본적으로 동일하고 잘 작동합니다 :

List<Account> accounts = await App.accountTable.Where(account => account.Username == username).ToListAsync(); 

나는 한 줄로 나에게 오류가 생기는 이유는 무엇인지 알 수 없다. 다른 하나는 쿼리 한 Account 테이블의 속성이 변경 되었기 때문에 발생하지 않습니다.

계정 테이블 구조는 : 모든 입력을 감상 할 수있다

CREATE TABLE [eventsphere].[Accounts] (
    [Id]   NVARCHAR (128)  DEFAULT (newid()) NOT NULL, 
    [AccountId] INT    IDENTITY (1, 1) NOT NULL, 
    [Username]  NVARCHAR (MAX)  NULL, 
    [EmailAddress] NVARCHAR (MAX)  NULL, 
    [Password]  NVARCHAR (MAX)  NULL, 
    [IsBusiness] BIT    NOT NULL, 
    [User_Id]  NVARCHAR (128)  NULL, 
    [Business_Id] NVARCHAR (128)  NULL, 
    [Version]  ROWVERSION   NOT NULL, 
    [CreatedAt] DATETIMEOFFSET (7) DEFAULT (sysutcdatetime()) NOT NULL, 
    [UpdatedAt] DATETIMEOFFSET (7) NULL, 
    [Deleted]  BIT    NOT NULL, 
    CONSTRAINT [PK_eventsphere.Accounts] PRIMARY KEY NONCLUSTERED ([Id] ASC), 
    CONSTRAINT [FK_eventsphere.Accounts_eventsphere.Businesses_Business_Id] FOREIGN KEY ([Business_Id]) REFERENCES [eventsphere].[Businesses] ([Id]), 
    CONSTRAINT [FK_eventsphere.Accounts_eventsphere.Users_User_Id] FOREIGN KEY ([User_Id]) REFERENCES [eventsphere].[Users] ([Id]) 
); 

(I 충분하지 명성을 가지고 있기 때문에 나 이미지를 게시 할되지 않습니다)! 미리 :) 감사

+0

테이블에 emailaddress 열이 있는지 확인할 수 있습니까? 또한 질문에 표 구조를 게시하십시오. –

+0

계정 테이블 구조가 포함되도록 내 게시물을 편집했습니다. –

+0

MobileServiceInvalidOperationException에서 '응답'이라는 속성이 있습니다.이 속성에는 서비스의 응답이 들어 있습니다. 응답 내용을보고 서버가 요청을 잘못했다고 생각하는 이유에 대한 정보가 있는지 확인할 수 있습니까? – carlosfigueira

답변

0

처럼 클라이언트 측에서 EmailAddress 속성 어떤 것일까? 그것은 어느 시점에서 소문자가되고 있습니다 - 클라이언트 모델에 어떤 속성이 있습니까?

'Username'과 'username'이 모두 작동하는 이유는 서버가 속성의 첫 글자를 대문자와 소문자 모두 허용하기 때문입니다. 예를 들어 'emailAddress'가 작동해야합니다.

+0

안녕하세요, 웹 Api가 테이블과 동기화되지 않아 문제가 발생했음을 알게되었습니다. 우리 부분에 대한 어리석은 실수는 그것에 대해 전혀 생각조차하지 못했습니다 (저는 Azure가 처음입니다). 답장을 보내 주셔서 감사합니다! –

0

(내가 대답으로 이것을 게시하도록하겠습니다 있도록 10 명성을 때까지 말씀 드릴 수 없습니다 ..) 여기에

가 생성의 로컬 복사본 전송 년대 질의 요청 우리의 데이터베이스 :이 개체를 반환

http://localhost:59737/tables/Account?$filter=(emailaddress%20eq%20%27email%40test.com%27)  

(필자는 "메시지"속성이 모든 생각은 중요) : 그러나

{"message":"The query specified in the URI is not valid. Could not find a property named 'emailaddress' on type 'eventsphereService.DataObjects.Account'.","exceptionMessage":"Could not find a property named 'emailaddress' on type 'eventsphereService.DataObjects.Account'.","exceptionType":"Microsoft.Data.OData.ODataException","stackTrace":" at Microsoft.Data.OData.Query.EndPathBinder.GeneratePropertyAccessQueryForOpenType(EndPathToken endPathToken, SingleValueNode parentNode)\r\n at Microsoft.Data.OData.Query.EndPathBinder.BindEndPath(EndPathToken endPathToken, BindingState state)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindEndPath(EndPathToken endPathToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.BinaryOperatorBinder.GetOperandFromToken(BinaryOperatorKind operatorKind, QueryToken queryToken)\r\n at Microsoft.Data.OData.Query.BinaryOperatorBinder.BindBinaryOperator(BinaryOperatorToken binaryOperatorToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindBinaryOperator(BinaryOperatorToken binaryOperatorToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.FilterBinder.BindFilter(QueryToken filter)\r\n at Microsoft.Data.OData.Query.ODataUriParser.ParseFilterImplementation(String filter, IEdmType elementType, IEdmEntitySet entitySet)\r\n at System.Web.Http.OData.Query.FilterQueryOption.get_FilterClause()\r\n at System.Web.Http.OData.Query.Validators.FilterQueryValidator.Validate(FilterQueryOption filterQueryOption, ODataValidationSettings settings)\r\n at System.Web.Http.OData.Query.FilterQueryOption.Validate(ODataValidationSettings validationSettings)\r\n at System.Web.Http.OData.Query.Validators.ODataQueryValidator.Validate(ODataQueryOptions options, ODataValidationSettings validationSettings)\r\n at System.Web.Http.OData.Query.ODataQueryOptions.Validate(ODataValidationSettings validationSettings)\r\n at System.Web.Http.OData.EnableQueryAttribute.ValidateQuery(HttpRequestMessage request, ODataQueryOptions queryOptions)\r\n at System.Web.Http.OData.EnableQueryAttribute.ExecuteQuery(Object response, HttpRequestMessage request, HttpActionDescriptor actionDescriptor)\r\n at System.Web.Http.OData.EnableQueryAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext)"} 

(브라우저에서, 우리가) 수정하면 다음과 같다 :

http://localhost:59737/tables/Account?$filter=(EmailAddress%20eq%20%27email%40test.com%27) 

일부 데이터가 반환됩니다.

사용자 이름 필드를 쿼리 할 때 "사용자 이름"과 "사용자 이름"이 모두 데이터를 반환합니다.

[계정 데이터 객체

는 다음과 같이 정의된다

public class Account : EntityData 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int AccountId { get; set; } 
    public string Username { get; set; } 
    [DataType(DataType.EmailAddress)] 
    public string EmailAddress { get; set; } 
    public string Password { get; set; } 
    public bool IsBusiness { get; set; } 

    public string User_Id { get; set; } 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [ForeignKey("User_Id")] 
    [Association("UserIdAssociation", "UserId", "Id")] 
    [Column(Order = 1)] 
    public virtual User User { get; set; } 

    public string Business_Id { get; set; } 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [ForeignKey("Business_Id")] 
    [Association("BusinessIdAssociation", "BusinessId", "Id")] 
    public virtual Business Business { get; set; } 
}