지원 가능성을 이유로 .Net Core에서 ReactJs로 .NET MVC로 응용 프로그램을 이식하고 있습니다.404 MVC로 .Net Core 응용 프로그램을 포팅 한 후의 오류
또한 상태 처리에는 Redux가 사용됩니다.
이것은 정상적으로 보였지만 어떤 이유로 WebAPI 호출이 모두 404 오류로 실패합니다.
저는 라우팅이 실패한 전화에 따라 정확하다고 확신하지만 뭔가 어딘가에서 길을 잃고 있습니다.
엔트리 포인트로 추가 된 기본 MVC 컨트롤러는 정상적으로 작동하지만, 실패한 것처럼 보이는 포트 된 WebAPI 컨트롤러 일뿐입니다.
나는 상업적인 이유로 전체 코드를 게시 할 수 있지 않다 그러나 이것은 컨트롤러와 문제가되는 작업 중 하나가 모습입니다: (나 추가 의견을 싹둑)
namespace Api.Controllers
{
/// <summary>
/// Account management.
/// </summary>
[Authorize]
[System.Web.Http.RoutePrefix("api/account")]
public class AccountController : ApiController
{
// <snip>
/// <summary>
/// Current logged in account.
/// </summary>
// GET api/Account/UserInfo
[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
[System.Web.Http.Route("userinfo")]
public async Task<UserInfoViewModel> GetUserInfo()
{
ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);
var userName = User.Identity.GetUserName();
var account = new AccountRepresentation(await _context
.Accounts
.SingleOrDefaultAsync(acc => acc.Email == userName));
return new UserInfoViewModel
{
Account = account,
UserName = User.Identity.GetUserName(),
Email = User.Identity.GetUserName(),
HasRegistered = externalLogin == null,
LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null,
Roles = await UserManager.GetRolesAsync(User.Identity.GetUserName())
};
}
// </snip>
}
}
라우팅 속성에 주목하십시오. 모든 것을 시도하면서 조금 위에 있습니다. 그러나 내가 알 수있는 한, 이것은 괜찮을 것입니다. 그러나 브라우저 콘솔에서 나는 이것을보고 있어요 :
자원을로드하지 못했습니다 : 서버가 404 (찾을 수 없음) 의 상태로 응답 http://localhost:49690/api/account/userinfo
포트 번호가에 대한 올바른 어떤 이유로 든 다른 컨트롤러와 다른 경우가 아니라면이 컨트롤러도 괜찮습니다.
namespace Api
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
//UnityConfig.RegisterComponents();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
log4net.Config.XmlConfigurator.Configure();
}
}
}
:
namespace Api
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Web API configuration and services
// Web API routes
// config.MapHttpAttributeRoutes();
// Configure Web API to use only bearer token authentication.
// config.SuppressDefaultHostAuthentication();
// config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
//config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
}
}
}
Application_Start()
namespace Api
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "Api.Controllers" }
).DataTokens.Add("area", "UI");
routes.MapRoute(
name: "api",
url: "api/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "Api.Controllers" }
).DataTokens.Add("area", "UI");
}
}
}
WebApiConfig
파일을 찾습니다
나는 다음과 같이 현재 보이는 RouteConfig.cs
파일과 함께 놀았 던
내가 누락되거나 잘못 될 수있는 것은 무엇입니까? API 작업을 찾지 못하게합니까?
비주얼 스튜디오 버전 : 기업 2015 업데이트 3
.NET 버전 : 4.6.1
아무 것도 작동하지 않습니다. 이제는 처음부터 새로운 프로젝트를 시작하고 한 번에 하나의 컨트롤러에 코드를 추가하는 것을 고려하고 있습니다. – CompanyDroneFromSector7G