Контроллер таблицы мобильного приложения Azure больше не работает после добавления приложения MVC - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть мобильное приложение, написанное на 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 }
             );
        }
    }
...