6

Actualmente estoy implementando en un sitio web MVC 3 que usa Entity Framework 4.3 para el acceso a la base de datos.Resultados inesperados con paginación después de implementar la aplicación en IIS (MVC3, EF 4.3)

La aplicación funciona como se espera en el servidor de desarrollo de Visual Studio, pero una vez que se implementa en el servidor remoto la consulta reacciona de forma inesperada

Debe mostrar una lista y páginas ordenada a través de que los datos ordenados

I' He intentado reiniciar el servidor web y la máquina del servidor físico para asegurarme de que el caché se ha ido e incluso he intentado utilizar un sitio IIS limpio en el servidor remoto con el mismo resultado.

[Editar]: También he hecho un total eliminar y volver a publicar en un sitio limpio, así

El equipo de desarrollo

development machine

en el servidor remoto

enter image description here

El código que estoy utilizando para generar las tablas:

controlador

[HttpGet] 
    public virtual ActionResult Index(string filter = "", int? page = null) 
    { 

     page = page ?? 1; 
     filter = filter.Trim().ToLower(); 
     int pageSize = Properties.Settings.Default.DefaultSPPageSize; 



     int skipNum = (page.Value - 1) * pageSize; 

     IQueryable<SamplePoint> spList; 
     var points = new HashSet<string>(Settings.Default.SamplePointFilter.Split(',')); 


     if (filter != "") 
      spList = db.SamplePoints.Where(e=> 
         points.Any(p=> e.Id.StartsWith(p)) 
        && e.Id.ToLower().Trim().StartsWith(filter.ToLower())) 
      .OrderBy(o => o.Id); 

     else 
      spList = db.SamplePoints.Where(e => 
         points.Any(p => e.Id.StartsWith(p)) 
        && e.Id.Trim().StartsWith(filter)).OrderBy(o => o.Id); 


     List<SamplePoint> pageItems; 
     if (page != 0) 
     { 
      pageItems = spList.Skip(skipNum).Take(pageSize).ToList(); 
     } 
     else 
     { 
      pageItems = spList.OrderBy(o=> o.Id).ToList(); 
     } 

     int _totPages = Convert.ToInt32(pageSize > 0 ? Math.Ceiling(((double)spList.Count()/(double)pageSize)) : 0); 


     var vModel = new SamplePointListViewModel(pageItems, filter) { LocationList = FilterListItems, TotalPages = _totPages, CurrentPage = page.Value }; 

     return View(this.IsExcelRequest() ? MVC.Reports.Views.Excel.SamplePointList : MVC.Reports.Views.SamplePointList, vModel); 
    } 
+0

¿Se está conectando a la misma base de datos? –

+0

sí, es la misma base de datos una vez que en el servidor interrumpe el pedido aunque está tirando de los registros tomados sin ordenarlos primero –

+0

está ordenando por ID puede verificar si los ID son los mismos en el servidor y la máquina de desarrollo? – keshav

Respuesta

0

Asegúrese de que la versión de ASP.NET MVC es la misma en ambas máquinas (dev/prod). Otras personas got problems debido a esto.

Básicamente sucedió que una versión más reciente estaba en el GAC del servidor de producción.

+0

mvc 3 se implementó con la aplicación y nunca he usado mvc 2 en el pasado –

0

Una solución simple es implementar algún tipo de registro y escribir la salida producida en niveles intermedios en un archivo de registro.

Si está utilizando VS ultimate edition, puede dar una oportunidad usando IntelliTrace. (No he utilizado esta herramienta aunque oí hablar de él)

+0

lamentablemente no tenemos el máximo rendimiento en el trabajo solo lo tengo en casa = ( –

0
spList = db.SamplePoints.Where(e=> 
         points.Any(p=> e.Id.StartsWith(p)) 
        && e.Id.ToLower().Trim().StartsWith(filter.ToLower())) 
      .OrderBy(o => o.Id); 

Utilizando su código anterior,

Es la e.ID la primera columna en la imagen de arriba? si no, ¿es e.Id la clave principal y IdentitySeed establecido en verdadero? Si es así, este es su problema, ya que se genera automáticamente, esta ID será diferente en la base de datos de producción y la base de datos de desarrollo que causa la visualización de manera diferente.

+0

Q1 : Creo que he mencionado esto un par de veces, pero hay solo 1 base de datos no hay desarrollo. DB. No hay datos escritos en la base de datos por esta aplicación. Q2: Id es la clave principal de la tabla y esto una semilla de identidad de base de datos Oracle es, por lo que yo sé, una opción de servidor ms sql, todos los datos son mantenidos por otra aplicación de servidor –

0

¿Ambos servidores tienen la misma configuración regional?

Se utilizan string.ToLover y StartsWith que llevará a cabo la transformación basada en la cultura actual.

Debe utilizar versiones sobrecargadas de estos métodos con cultura Invariant.

Cuestiones relacionadas