簡體   English   中英

ASP.NET Core Web API引發HTTP 500

[英]ASP.NET Core Web API Throws HTTP 500

我創建了一個新的ASP.NET Core Web API,並具有多個控制器,例如:

 [Route("api/[controller]")]
public class DoctorRevenueController : Controller
{
    private IDoctorRevenueRepository DoctorRevenueRepository;
    public DoctorRevenueController(IDoctorRevenueRepository repository)
    {
        DoctorRevenueRepository = repository;
    }
    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
    }

    [HttpGet("GetDoctorRevenues")]
    //[Route("DoctorRevenue")]
    public async Task<IActionResult> GetDoctorRevenues(Int32? pageSize = 10, Int32? pageNumber = 1, String DoctorName = null)
    {
        var response = new ListModelResponse<DocRevViewModel>() as IListModelResponse<DocRevViewModel>;

        try
        {
            response.PageSize = (Int32)pageSize;
            response.PageNumber = (Int32)pageNumber;

            response.Model = await Task.Run(() =>
            {
                return DoctorRevenueRepository
                .GetDocRevenues(response.PageNumber, response.PageSize, DoctorName)
                .Select(item => item.ToViewModel())
                .ToList();
            });
            response.Message = String.Format("Total Records {0}", response.Model.Count());
        }
        catch (Exception ex)
        {
            response.DidError = true;
            response.Message = ex.Message;
        }
        return response.ToHttpResponse();
    }

    //GET DoctorRevenues/Doctor
    [HttpGet("GetDoctorRevenue/{DoctorId}")]
    //[Route("DoctorRevenue")]
    public async Task<IActionResult> GetDoctorRevenue(int DoctorId)
    {
        var response = new SingleModelResponse<DocRevViewModel>() as ISingleModelResponse<DocRevViewModel>;

        try
        {
            response.Model = await Task.Run(() =>
            {
                return DoctorRevenueRepository.GetDocRevenue(DoctorId).ToViewModel();
            });
        }
        catch (Exception ex)
        {
            response.DidError = true;
            response.Message = ex.Message;
        }
        return response.ToHttpResponse();
    }

    //POST DoctorRevenues/Doctor
    [HttpPost("CreateDoctorRevenue/{DoctorId}")]
    //[Route("DoctorRevenue")]
    public async Task<IActionResult> CreateDoctorRevenue([FromBody]DocRevViewModel value)
    {
        var response = new SingleModelResponse<DocRevViewModel>() as ISingleModelResponse<DocRevViewModel>;

        try
        {
            var entity = await Task.Run(() =>
            {
                return DoctorRevenueRepository.AddDocRevenue(value.ToEntity());
            });
            response.Model = entity.ToViewModel();
            response.Message = "The invoices and revenue for this doctor have been successfully saved.";
        }
        catch(Exception ex)
        {
            response.DidError = true;
            response.Message = ex.Message;
        }
        return response.ToHttpResponse();
    }

    //PUT DoctorRevenues/Doctor/5
    [HttpPut("UpdateDoctorRevenue/{RecordId}")]
    //[Route("DoctorRevenue/{RecordId}")]
    public async Task<IActionResult> UpdateDoctorRevenue(int RecordId, [FromBody]DocRevViewModel value)
    {
        var response = new SingleModelResponse<DocRevViewModel>() as ISingleModelResponse<DocRevViewModel>;

        try
        {
            var entity = await Task.Run(() =>
            {
                return DoctorRevenueRepository.UpdateDocRevenue(RecordId, value.ToEntity());
            });
            response.Model = entity.ToViewModel();
            response.Message = "The invoices and revenue for this doctor were successfully updated.";
        }
        catch(Exception ex)
        {
            response.DidError = true;
            response.Message = ex.Message;
        }
        return response.ToHttpResponse();
    }

    //DELETE DoctorRevenue/5
    [HttpDelete]
    [Route("DoctorRevenue/{RecordId}")]
    public async Task<IActionResult> DeleteDoctorRevenue(int RecordId)
    {
        var response = new SingleModelResponse<DocRevViewModel>() as ISingleModelResponse<DocRevViewModel>;

        try
        {
            var entity = await Task.Run(() =>
            {
                return DoctorRevenueRepository.DeleteDocRevenue(RecordId);
            });
            response.Message = "This doctor's invoices and revenue have been deleted";
        }
        catch(Exception ex)
        {
            response.DidError = true;
            response.Message = ex.Message;
        }
        return response.ToHttpResponse();
    }
}

我的Startup.cs包括:

public void ConfigureServices(IServiceCollection services)
    {

        services.AddScoped<IDoctorMasterRepository, DoctorMasterRepository>();
        services.AddScoped<IDoctorRevenueRepository, DoctorRevenueRepository>();
        services.AddScoped<IFacilityMasterRepository, FacilityMasterRepository>();
        services.AddScoped<IFacilityRevenueRepository, FacilityRevenueRepository>();
        // Add framework services.
        services.AddApplicationInsightsTelemetry(Configuration);

        services.AddMvc();
        services.AddOptions();

        services.AddLogging();

        services.AddSingleton<IDoctorMasterRepository, DoctorMasterRepository>();
        services.AddSingleton<IFacilityMasterRepository, FacilityMasterRepository>();
        services.AddSingleton<IDoctorRevenueRepository, DoctorRevenueRepository>();
        services.AddSingleton<IFacilityRevenueRepository, FacilityRevenueRepository>();

        services.AddSwaggerGen();

    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        app.UseStaticFiles();

        app.UseDeveloperExceptionPage();

        app.UseApplicationInsightsRequestTelemetry();

        app.UseApplicationInsightsExceptionTelemetry();

        app.UseMvc();

        app.UseSwagger();

        app.UseSwaggerUi();
    }

成功構建項目后,調試會產生錯誤:

localhost refused to connect.  ERR_CONNECTION_REFUSED

如何解決此問題,以便可以查看我的API文檔頁面?

我發現需要在命令行中執行dotnet run才能啟動本地IISExpress平台。 之后,郵遞員按預期提供了我的API路由。

暫無
暫無

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

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