2016-03-22 24 views
2

Bir ASP.NET projesini IIS6'dan (Win Server 2003) IIS 8.5'e (Win Server 2012 R2) taşıyoruz. Proje, aşağıdaki yönlendirmenin kullanıldığı bazı MVC bileşenlerine sahiptir. Böylece IIS 8.5'de sondaki sorun giderme sorunu

routes.MapRoute("simple", "{controller}.mvc/{action}/{id}"); 
routes.MapRoute(
       "Default", 
       "{controller}.mvc/{action}/{id}"        
       new { controller = "Home", action = "Index", id = "" } 
      ); 

MyDemoController çağrısı

MyDemo.mvc

tarafından erişilebilir olacaktır

Şimdi ne olur, ben MyDemo.mvc olarak url kullandığınızda/çalıştığını, ancak kesme işareti olmadan MyDemo.mvc kullandığınızda o 404 hatası veriyor.

Bu, yalnızca dağıtılan sunucuda olur. IIS7.5, Win 7 kullanan yerel makinelerimizde herhangi bir sorun olmadan çalışır.

Site haritası dosyasına çok sayıda URL eklendiğinden ve istemcimiz yaklaşımı onaylamadığından el ile değiştirme mümkün değildir.

Bu, IIS sürümüne özgü bir sorun mu yoksa küçük bir sorun değil mi?

+0

'simple' ve' default' yolları aynıdır yardımcı olur, ancak basit set öntanımlıların yoktur. – Nkosi

+0

@nkosi, gördüklerim, garip görünüyordu ama oraya tam olarak ulaştığım kod – SamGhatak

+0

Eğer basit çıkarırsanız. 'MyDemo.mvc' bir' Index' eylem – Nkosi

cevap

2

Aşağıdakilere bir bakın. Bunun senin problemin olduğuna inanıyorum. Bu .mvc uzantısı ile ilgisi var.

Dots in URL causes 404 with ASP.NET mvc and IIS

ASP.NET MVC - Routing - an action with file extension sorun IIS statik bir dosya olarak .mvc dosyayı işlemek ve edecektir olacak sizin MVC uygulaması üzerinden varsayılan değil rota varsayımsal .mvc dosyasını tarafından. IIS, bu isteği iletir ve MVC kodunuz bu dosyaya yönlendirmek için hiçbir zaman değiştirmez. herhangi bir sorun olmadan IIS7.5, Win 7 üzerinde çalışıyor gelince

<system.webServer> 
    <handlers> 
    <add name="MVCFileHandler" 
     path="*.mvc" 
     verb="GET" type="System.Web.Handlers.TransferRequestHandler" 
     preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" /> 
    </handlers> 
</system.webServer> 

değil 8.5 IIS:

Özetle, burada konfigürasyon .mvc dosya çalışması için böyle görünüyor.

Bu yanıt

Routing a url with extension in MVC4 won't work, tries to serve up static file

bakmak da MVC4/IIS8 için çalışmak görünmüyor <modules runAllManagedModulesForAllRequests="true"> ama yoktur (MVC3 Tamam eskiden/IIS7 IIRC) . Daha fazla bilgi here. Her istek, yönetilen boru hattı üzerinden rotası olacak şekilde bununla bir performans etkisi vardır.

Umut tüm bu

+0

IIS üzerinden işleyici ekleyerek düzeltildi. IsapiModule ve aspnet_isapi.dll ile HandlerMappings özel bir işleyici eklendi ... Yardımınız için teşekkürler @Nkosi, .. gerçekten takdir :) – SamGhatak