При использовании MVC3 + SQL CE я получаю 404 на всех страницах с лесами против базы данных SQL CE - PullRequest
0 голосов
/ 14 октября 2011

Проблема возникает только на сервере с Windows 2008 Server, локально запускаю приложение и проблем нет.Я использовал параметры «bin deploy» и «Add Deployable Dependencies ...» и все еще не повезло.Еще немного контекста ...

Параметры безопасности в IIS установлены для проверки подлинности Windows, в файле web.config есть небольшое исключение анонимных пользователей (не уверен, что это даже имеет значение в этом сценарии).

  <authentication mode="Windows" />

В файле Global.asax.cs у меня есть сгенерированный стандартный шаблон кода.

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("elmah.axd");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
}

Единственное добавление, которое я сделал, касается elmah и favicon.Я не уверен, на что еще смотреть с этой точки зрения, поэтому любая помощь будет принята.

Кроме того, моя строка подключения к SQL CE выглядит следующим образом:

<add name="BillingLogDbEntities" connectionString="metadata=res://*/Models.BillingLog.csdl|res://*/Models.BillingLog.ssdl|res://*/Models.BillingLog.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=|DataDirectory|\BillingLogDb.sdf&quot;" providerName="System.Data.EntityClient" />
    <add name="BillingLocalDbEntities" connectionString="metadata=res://*/Models.BillingLocal.csdl|res://*/Models.BillingLocal.ssdl|res://*/Models.BillingLocal.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=|DataDirectory|\BillingLocalDb.sdf&quot;" providerName="System.Data.EntityClient" />
    <add name="OverlayServicesDbEntities" connectionString="metadata=res://*/Models.OverlayServices.csdl|res://*/Models.OverlayServices.ssdl|res://*/Models.OverlayServices.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=|DataDirectory|\OverlayServicesDb.sdf&quot;" providerName="System.Data.EntityClient" />

1 Ответ

1 голос
/ 31 декабря 2011

Решение было комбинацией двух вещей:

  1. Мне нужно было установить соответствующие разрешения для каталога, в котором находятся файлы SQL Server CE.
  2. Необходимо обновить Entity Framework, чтобы снова указать базы данных SQL CE. По какой-то причине приложение фактически поглощало ошибки, которые просто «не могли подключиться к базе данных X». Что-то в сгенерированном коде вышло из-под синхронизации.
...