我创建了一个简单的Web Api应用程序,该应用程序在今晚早些时候正在运行。但是在安装Ninject并重新安装引用时遇到一些问题(在使用Nuget卸载Ninject时意外删除了一些)。
我认为这可能是由于我的Startup.cs文件:
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app);
app.UseNinjectMiddleware(CreateKernel).UseNinjectWebApi(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
}
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
private StandardKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
return kernel;
}
}
这是我的一个控制器:
[RoutePrefix("api/Books")]
public class BooksController:ApiController { 私人IBookService _bookService;
private BooksController(IBookService bookService)
{
_bookService = bookService;
}
[Route("GetAllBooks")]
public IEnumerable<Book> GetAllBooks()
{
return _bookService.GetAllBooks();
}
[Route("GetBook")]
public IHttpActionResult GetBook(string isbn)
{
var book = _bookService.GetBook(isbn);
if (book == null)
return NotFound();
return Ok(book);
}
然而,我对这些路线中的任何一个进行的每次通话都会返回404,例如:
http://localhost/api/Books/GetAllBooks
正如你所看到的,我正在使用Ninject和Owin,所以我不确定这是否会导致问题。
以前见过这个或有任何想法的人?
答案 0 :(得分:1)
我看到你正在使用属性路由。要使其正常工作,您需要致电config.MapHttpAttributeRoutes();
:
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();