У меня есть мобильное приложение, написанное на Xamarin.Forms, которое подключается к бэкэнду мобильного приложения Azure. Я собрал и запустил приложение со всеми работающими контроллерами таблиц и включенным онлайн / автономным доступом. Затем я обратил свое внимание на написание бэкэнд-сайта, который я планирую кодировать в MVC. Я следовал указаниям здесь в превосходной книге Адриана Холла по теме добавления существующего экземпляра мобильного приложения Azure на веб-сайт MVC.
Теперь сайт MVC работает нормально, но ни один из моих контроллеров таблиц для мобильного приложения не работает. Когда я пытаюсь выполнить один запрос GET all, я получаю сообщение «Ошибка сервера в« / »приложении. Ресурс не найден». Я получаю сообщение об исключительной ситуации http: «Контроллер для пути {путь к таблице} не найден или не реализует IController."
Полагаю, мне, возможно, придется изменить файл "RouteConfig.cs"? Но это только предположение, и различные комбинации, которые я пробовал, не увенчались успехом. Может ли кто-нибудь указать мне, что необходимо изменить в моем приложении для поддержки мобильного приложения, используя шаблон "/ tables / {tablename}" по умолчанию И шаблон "{controller} / {action} / {id}" MVC?
Обратите внимание, я много раз искал в stackoverflow и google, но не нашел ответа на этот конкретный вопрос. Если ответ уже существует в Интернете, я был бы очень признателен за указание на него.
использование мобильных служб Azure с приложением MVC - этот вопрос и ответ не помогли, поскольку я не использую ApiController для пользовательского API, я использую TableController по умолчанию из мобильных служб Azure.
Расширение мобильной службы Azure: добавьте MVC и новые маршруты - Как отмечается в этом ответе, я использую мобильные приложения Azure, а не SDK мобильной службы Azure. Я также попробовал предложить модифицировать Startup.MobileApp.cs с помощью «.UseDefaultConfiguration ()» и различных комбинаций сорванной конфигурации по умолчанию, но безрезультатно.
Добавление страницы MVC asp.net вместе с мобильными службами Azure - ни одно из предложений в этом ответе не отвечает на мой вопрос выше.
Я также попытался закомментировать все в файле global.asax.cs - что привело меня к стандартной странице «Приложение службы приложений запущено и работает», а не к моей новой домашней странице MVC. GET / tables / {tablename} по-прежнему возвращает ошибку 404. Не найдено.
Я считаю, что весь соответствующий код размещен здесь. Если я что-то упустил, дайте мне знать.
Startup.cs
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureMobileApp(app);
}
}
Startup.MobileApp.cs
public partial class Startup
{
public static void ConfigureMobileApp(IAppBuilder app)
{
var httpConfig = new HttpConfiguration();
var mobileConfig = new MobileAppConfiguration();
mobileConfig
.AddTablesWithEntityFramework()
.ApplyTo(httpConfig);
httpConfig.MapHttpAttributeRoutes();
app.UseWebApi(httpConfig);
Database.SetInitializer<MobileServiceContext>(null);
}
}
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("wcf/{resource}.svc/{*pathInfo}");
routes.IgnoreRoute("wcf/{resource}.svc");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
}
}
Global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}