2016-12-01 17 views
0

をスロー私は新しいASP.NETコアのWeb APIを作成して、そのようなこの1のように複数のコントローラを持っていました:ASP.NETコアのWeb APIはHTTP 500

[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ドキュメントのページを表示しますか?

+0

[Route( "api/[controller]")]はデフォルトで現在のコントローラにマッピングされますか?私はそれほど興味がある前にこれを見たことがない –

+0

いいえこれを実現させるためにStsrtup.csにルーティングを追加する必要はありませんか? – SidC

+0

こちらをご覧くださいhttp://www.hanselman.com/blog/ExploringAMinimalWebAPIWithASPNETCore.aspx、スタートアップメソッドのバインディング –

答えて

0

ローカルのIISExpressプラットフォームを起動するには、コマンドラインでdotnet runを実行する必要があります。そうした後、PostmanはAPIルートを期待通りに提供しました。

関連する問題