簡體   English   中英

“值不能為空。\\ r \\ n參數名稱:實體(ASP.NET Web API)

[英]"Value cannot be null.\r\nParameter name: entity (ASP.NET Web API)

我有帶表TimeTable的webapi項目

這是桌子

 CREATE TABLE [dbo].[TimeTable] (
    [Id]         INT            IDENTITY (1, 1) NOT NULL,
    [Company]    NVARCHAR (MAX) NULL,
    [INN]        NVARCHAR (MAX) NULL,
    [StartDay]   NVARCHAR (MAX) NULL,
    [StartPause] NVARCHAR (MAX) NULL,
    [EndDay]     NVARCHAR (MAX) NULL,
    [EndPause]   NVARCHAR (MAX) NULL,
    [Today]      DATE           NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

和課

public partial class TimeTable
{
    public int Id { get; set; }
    public string Company { get; set; }
    public string INN { get; set; }
    public string StartDay { get; set; }
    public string StartPause { get; set; }
    public string EndDay { get; set; }
    public string EndPause { get; set; }
    public Nullable<System.DateTime> Today { get; set; }
}

這是將數據添加到表的控制器

 [ResponseType(typeof(TimeTable))]
    public IHttpActionResult PostStartWorkingDay(TimeTable startWorkingDay)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.TimeTables.Add(startWorkingDay);
        db.SaveChanges();


        //return Json(new { Result = "Success", Message = "Saved Successfully"}, startWorkingDay);

        return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
    }

當我從郵遞員發送發帖請求時

這是要求書

{"Company":"123","INN":"123","StartDay":"15:8:2017T16:55:38"}

一切正常,數據正在寫入

我得到這個回應

{
"Id": 1013,
"Company": "123",
"INN": "123",
"StartDay": "15:8:2017T16:55:38",
"StartPause": null,
"EndDay": null,
"EndPause": null,
"Today": null

}

但我也嘗試過使用restsharp從xamarin應用程序請求

這是代碼

var client = new RestClient("http://timetrackingbackend.azurewebsites.net/api");
        var request = new RestRequest("/StartWorkingDays", Method.POST);
        request.AddQueryParameter("Company", "12366");
        request.AddQueryParameter("INN", "12366");
        request.AddQueryParameter("StartDay", "8/14/2017T14.48");
        var response = client.Execute(request);
        string content = response.Content;

我有這個錯誤

{"Message":"An error has occurred.","ExceptionMessage":"Value cannot be null.\r\nParameter name: entity","ExceptionType":"System.ArgumentNullException","StackTrace":"   at System.Data.Entity.Utilities.Check.NotNull[T](T value, String parameterName)\r\n   at System.Data.Entity.DbSet`1.Add(TEntity entity)\r\n   at trackingappbackend.Controllers.StartWorkingDaysController.PostStartWorkingDay(TimeTable startWorkingDay) in C:\\Users\\nemes\\Documents\\Visual Studio 2017\\Projects\\trackingappbackend\\trackingappbackend\\Controllers\\StartWorkingDaysController.cs:line 48\r\n   at lambda_method(Closure , Object , Object[] )\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"}

由於請求似乎相同,我該如何解決?

嘗試將數據作為json發送。 這是一個使用HttpClient而不是RestSharp的示例(不是說RestSharp是錯誤的):

var timeTable = new TimeTable(){Company= "12366", 
                                INN = "12366",
                                StartDay = "8/14/2017T14.48");

var response = client.PostAsync("/StartWorkingDays",
                            new StringContent(
                                JsonConvert.SerializeObject(timeTable),
                                                Encoding.UTF8, "application/json")).Result;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM