Jam*_*mes 6 c# asp.net iis asp.net-web-api asp.net-mvc-5
我正在努力让这个WebAPI工作.好吧,使用IIS.在IIS express中一切正常,但是当我发布它时,特别是1 api请求不起作用.我正在尝试访问的网址API/[Controller]/{date}/{integer}.我一直收到500服务器错误.我的另一条API/[Controller]/{date}作品.
这是我的API控制器:
[Route("api/[controller]")]
public class PostingsController : Controller
{
// GET: api/Postings/5
[HttpGet("{date}")]
public string Get(string date)
{
return date;
}
// GET api/Postings/20160407/2
[HttpGet("{date}/{modeID}")]
public List<TruckPosting> Get(string date, int modeID)
{
TruckPosting tp = new TruckPosting();
List<TruckPosting> truckPostings = tp.GetTruckPostings(date, modeID);
return truckPostings;
}
}
Run Code Online (Sandbox Code Playgroud)
原因可能是我正在尝试返回List <>?考虑到它在VS的IIS Express中运行良好,我很难过.
编辑
这是我的startup.cs页面:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure1(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseIISPlatformHandler();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseFileServer(true);
app.UseMvc();
}
// 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)
{
app.Map("/appRoot", (app1) => this.Configure1(app1, env, loggerFactory));
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的想法,你可能会返回一个List.我们有工作的Core Web API方法,所有这些方法都返回Task<IEnumerable<Foo>>.尝试将返回类型更改List<TruckPosting>为Task<IEnumerable<TruckPosting>>
编辑:要查看500(内部服务器)错误的详细信息,您需要将以下代码行放在Configure(或Configure1)方法的开头:
app.UseDeveloperExceptionPage();
Run Code Online (Sandbox Code Playgroud)
显然,这不是您在生产环境中想要的东西.
编辑2:在VS中运行时,只要"属性"的"调试"部分中的"主机:环境"变量设置为"开发",就可以使用下面的代码显示异常详细信息.发布后,您需要创建一个名为ASPNET_ENV的系统环境变量,并将其值设置为"Development",否则代码将不会调用UseDeveloperExceptionPage()方法.
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
Run Code Online (Sandbox Code Playgroud)