从Visual Studio 2019运行时在IIS Express上获取NullReferenceException

哈迪扎·科布拉

我试图对数据库(远程服务器上托管的Oracle18c)上的表执行CRUD操作-“项目”,其中项目和UnitWeight为列。这是我的第一个ASP.NET项目。遵循我在网上找到的教程(https://www.c-sharpcorner.com/blogs/crud-operation-in-asp-net-core-core30-with-oracle-database2)。我能够按照步骤进行操作,没有任何问题。但是,当我尝试在IIS Express中运行项目时,出现以下错误。我不确定自己在做什么错。

在此处输入图片说明

我在下面提供我的摘要。

Items.cs [模型]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace cs550.Models
{
public class Items
    {
    public string item { get; set; }
    public int unitWeight { get; set; }

    }
}

itemService.CS [服务]

using cs550.Interface;
using cs550.Models;
using Microsoft.Extensions.Configuration;
using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace cs550.Services
{
    public class itemService : IItemService
    {
        private readonly string _connectionString;
        public itemService(IConfiguration _configuration)
        {
            _connectionString = _configuration.GetConnectionString("OracleDBConnection");
        }
        public IEnumerable<Items> getAllItem()
        {
            List<Items> itemList = new List<Items>();
             using (OracleConnection con = new OracleConnection(_connectionString))
        {
            using (OracleCommand cmd = con.CreateCommand())
            {
                    con.Open();
                    cmd.BindByName = true;
                    cmd.CommandText = "Select item, unitWeight from Items";
                    OracleDataReader rdr = cmd.ExecuteReader();
                    while(rdr.Read())
                    {
                        Items item = new Items
                        {
                            item = rdr["item"].ToString(),
                            unitWeight = Convert.ToInt32(rdr["unitWeight"])

                        };
                        itemList.Add(item);
                    }
                }
            }
            return itemList;
        }

    public Items getItemByItem(string it)
    {
        Items items = new Items();
         using (OracleConnection con = new OracleConnection(_connectionString))
        {
            using (OracleCommand cmd = con.CreateCommand())
            {
                con.Open();
                cmd.BindByName = true;
                cmd.CommandText = "Select item, unitWeight from Items Where item="+it+"";
                OracleDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    items.item = rdr["item"].ToString();
                    items.unitWeight = Convert.ToInt32(rdr["unitWeight"]);
                }
            }

            return items;
        }
    }
    
    public void AddItems(Items it)
    {
        try
        {
             using (OracleConnection con = new OracleConnection(_connectionString))
        {
            using (OracleCommand cmd = con.CreateCommand())
            {
                    con.Open();
                    cmd.CommandText = "Insert into Items(item, unitWeight) Values('"+it.item+"',"+it.unitWeight+")";
                    cmd.ExecuteNonQuery();
                }
            }
        }
        catch (Exception)
        {
            throw;
        }
    }

    public void EditItems(Items it)
    {
        try
        {
             using (OracleConnection con = new OracleConnection(_connectionString))
        {
            using (OracleCommand cmd = con.CreateCommand())
            {
                    con.Open();
                    cmd.CommandText = "Update Items Set unitWeight="+it.unitWeight+" where item='"+it.item+"'";
                    cmd.ExecuteNonQuery();
                }
            }
        }
        catch (Exception)
        {
            throw;
        }
    }
}
}

IItemService.cs [接口]

using cs550.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace cs550.Interface
{
    public interface IItemService
    {
        IEnumerable<Items> getAllItem();
        Items getItemByItem(string it);

        void AddItems(Items it);

        public void EditItems(Items it);
    }
}

StrtupCS

using cs550.Interface;
using cs550.Services;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace cs550
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IItemService, itemService>();
        services.AddSingleton<IConfiguration>(Configuration);
        services.AddMvc().AddRazorPagesOptions(options =>
        {
            options.Conventions.AddPageRoute("/Items/Index", "");
        });
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Items}/{action=Index}/{item?}");
        });
    }
}
}

appsetting.JSON

{
"Logging": {
  "LogLevel": {
    "Default": "Information",
    "Microsoft": "Warning",
    "Microsoft.Hosting.Lifetime": "Information"
  }
},
"ConnectionStrings": {
  "OracleDBConnection": "User Id=myUserID;Password=myPassword; Data Source= remoteURL:1521/DB"
},
"AllowedHosts": "*"
}

ItemController.cs

using cs550.Interface;
using cs550.Models;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace cs550.Controllers
{
    public class ItemsController : Controller
    {
        IItemService itemService;

        public ItemsController(IItemService _itemService)
        {
            itemService = _itemService;
        }

        public ActionResult Index()
        {
            IEnumerable<Items> items = itemService.getAllItem();
            return View();
        }

    public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Create(Items it)
    {
        itemService.AddItems(it);
        return RedirectToAction(nameof(Index));
    }

    public ActionResult Edit(string item)
    {
        Items it = itemService.getItemByItem(item);
        return View(it);
    }

    [HttpPost]
    public ActionResult Edit(Items it)
    {
        itemService.EditItems(it);
        return RedirectToAction(nameof(Index));
    }
}
}

我的剃刀页面:

Index.cshtml

@model IEnumerable<cs550.Models.Items>

@{
    ViewData["Title"] = "Index";
}

<h1>Index</h1>

<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.item)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.unitWeight)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
@foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.item)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.unitWeight)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new {  id=item  }) |
                @Html.ActionLink("Delete", "Delete", new {  id=item })
            </td>
        </tr>
}
    </tbody>
</table>

Create.cshtml

@model cs550.Models.Items

@{
    ViewData["Title"] = "Create";
}

<h1>Create</h1>

<h4>Items</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="item" class="control-label"></label>
                <input asp-for="item" class="form-control" />
                <span asp-validation-for="item" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="unitWeight" class="control-label"></label>
                <input asp-for="unitWeight" class="form-control" />
                <span asp-validation-for="unitWeight" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

Edit.cshtml

@model cs550.Models.Items

@{
    ViewData["Title"] = "Edit";
}

<h1>Edit</h1>

<h4>Items</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Edit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="item" class="control-label"></label>
                <input asp-for="item" class="form-control" />
                <span asp-validation-for="item" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="unitWeight" class="control-label"></label>
                <input asp-for="unitWeight" class="form-control" />
                <span asp-validation-for="unitWeight" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Save" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

谢尔盖
    Change:
     using (OracleConnection con = new OracleConnection(_connectionString))
            {
                using (OracleCommand cmd = new OracleCommand())
                {
                

至:

      using(OracleConnection con = new OracleConnection(_connectionString))
     {  
              using(OracleCommand cmd = con.CreateCommand())
              {   

您必须在数据读取器中使用PL / SQL文本,或者可以创建存储过程并使用ref游标来处理数据

还要更改:

public class itemController : Controller

public class ItemsController : Controller

更改您的操作索引代码:

 public ActionResult Index()
        {
            IEnumerable<Items> items = itemService.getAllItem();
            return View(items);
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在使用IIS Express进行调试/运行时,Visual Studio 2019 Enterprise会自动添加COMPLUS_ForceENC环境变量

来自分类Dev

在Visual Studio上运行时程序变慢

来自分类Dev

在Visual Basic(Visual Studio 2019)的运行时中创建的ListView中的索引选择

来自分类Dev

运行时未部署Visual Studio

来自分类Dev

在 PATH 上找不到运行时“节点”。在 Ubuntu 18.04 上运行的 Visual Studio Code 中

来自分类Dev

Visual Studio 2019中的ANTLR4运行时问题

来自分类Dev

C#六个人工ImageSharp运行时错误System.Memory 4.0.1.0 Visual Studio 2019

来自分类Dev

每次我运行时,Visual Studio都会构建项目

来自分类Dev

通过Visual Studio运行时忽略IE中的缓存

来自分类Dev

Visual Studio 2012中的运行时不匹配

来自分类Dev

从Visual Studio运行时,STARTUPINFO.wShowWindow为0

来自分类Dev

从Visual Studio运行时,PowerShell脚本结果不同

来自分类Dev

Visual Studio 2010无法安装VC 9.0运行时

来自分类Dev

Visual Studio 2015预览-保持IIS Express运行

来自分类Dev

使用 Visual Studio 运行时查找和替换有效,但在运行 IIS 时出现空异常错误

来自分类Dev

脚本在Visual Studio中运行,但从批处理文件运行时则无法运行

来自分类Dev

安装 Microsoft.Azure.SignalR.AspNet 会导致方法在部署到服务器时未实现运行时错误,但在 Visual Studio 2017 上运行良好

来自分类Dev

Visual Studio 2015 IIS Express 500错误

来自分类Dev

Visual Studio找不到IIS Express

来自分类Dev

C / C ++运行时检查失败#2-变量'gradeLetter'周围的堆栈已损坏。Visual Studio2019。如何解决此问题?

来自分类Dev

Visual Studio 2012中的Visual C ++运行时可分发2010

来自分类Dev

Visual Studio 2010的Visual C ++ 2012运行时库先决条件

来自分类Dev

从Windows运行而不是从Visual Studio运行时,C#/ C ++应用程序崩溃

来自分类Dev

在ITextViewLine(Visual Studio扩展)上运行RegEx

来自分类Dev

SBT无法在Visual Studio代码上运行

来自分类Dev

在Windows XP上运行的免费Visual Studio?

来自分类Dev

Windows 10 Visual Studio 2019 IIS Express无法从错误500开始

来自分类Dev

Visual Studio 2010 SP1设计时间与运行时的呈现方式不同

来自分类Dev

在没有MSVCRT运行时的情况下在Visual Studio 2012中编译C

Related 相关文章

  1. 1

    在使用IIS Express进行调试/运行时,Visual Studio 2019 Enterprise会自动添加COMPLUS_ForceENC环境变量

  2. 2

    在Visual Studio上运行时程序变慢

  3. 3

    在Visual Basic(Visual Studio 2019)的运行时中创建的ListView中的索引选择

  4. 4

    运行时未部署Visual Studio

  5. 5

    在 PATH 上找不到运行时“节点”。在 Ubuntu 18.04 上运行的 Visual Studio Code 中

  6. 6

    Visual Studio 2019中的ANTLR4运行时问题

  7. 7

    C#六个人工ImageSharp运行时错误System.Memory 4.0.1.0 Visual Studio 2019

  8. 8

    每次我运行时,Visual Studio都会构建项目

  9. 9

    通过Visual Studio运行时忽略IE中的缓存

  10. 10

    Visual Studio 2012中的运行时不匹配

  11. 11

    从Visual Studio运行时,STARTUPINFO.wShowWindow为0

  12. 12

    从Visual Studio运行时,PowerShell脚本结果不同

  13. 13

    Visual Studio 2010无法安装VC 9.0运行时

  14. 14

    Visual Studio 2015预览-保持IIS Express运行

  15. 15

    使用 Visual Studio 运行时查找和替换有效,但在运行 IIS 时出现空异常错误

  16. 16

    脚本在Visual Studio中运行,但从批处理文件运行时则无法运行

  17. 17

    安装 Microsoft.Azure.SignalR.AspNet 会导致方法在部署到服务器时未实现运行时错误,但在 Visual Studio 2017 上运行良好

  18. 18

    Visual Studio 2015 IIS Express 500错误

  19. 19

    Visual Studio找不到IIS Express

  20. 20

    C / C ++运行时检查失败#2-变量'gradeLetter'周围的堆栈已损坏。Visual Studio2019。如何解决此问题?

  21. 21

    Visual Studio 2012中的Visual C ++运行时可分发2010

  22. 22

    Visual Studio 2010的Visual C ++ 2012运行时库先决条件

  23. 23

    从Windows运行而不是从Visual Studio运行时,C#/ C ++应用程序崩溃

  24. 24

    在ITextViewLine(Visual Studio扩展)上运行RegEx

  25. 25

    SBT无法在Visual Studio代码上运行

  26. 26

    在Windows XP上运行的免费Visual Studio?

  27. 27

    Windows 10 Visual Studio 2019 IIS Express无法从错误500开始

  28. 28

    Visual Studio 2010 SP1设计时间与运行时的呈现方式不同

  29. 29

    在没有MSVCRT运行时的情况下在Visual Studio 2012中编译C

热门标签

归档