2010-11-18 27 views
1

Tüm hepsi aynı MVC2 uygulamasında işaret edilen 3 etki alanı adı var. Şu anda sahip olduğum şey, bir trafik polisi olarak hareket eden ve denetleyicilere ve belirli ana makine adına yönelik görünümlere yönlendiren ana denetleyicidir. Ama bu neden URI sonucu ... sevmiyorumMVC2 yol haritalamasına ana bilgisayar adı nasıl eklenebilir?

örn: www.webhost1.com/webhost1/imagegallery

ben olmasını tercih ederim www.webhost2.com/webhost2/imagegallery :

www.webhost1.com/imagegallery

URI az gereksiz görünüyor ki yönlendirme değerlendirmede ana bilgisayar adını içerecek global.asax içinde yolları tanımlamak için bir yol var mı?

cevap

5

Aha !, biraz kibirli (ve eski ve eski bir kitap) aldı ama sanırım çözdüm.

Özel bir rota kısıtlaması oluşturmanız gerekir.

public class hostnameConstraint : IRouteConstraint 
    { 
     protected string _hostname; 

     public hostnameConstraint (string hostname) 
     { 
      _hostname = hostname; 
     } 

     bool IRouteConstraint.Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
     { 
      if (httpContext.Request.Url.Host == _hostname) 
       return true; 
      return false; 
     } 
    } 

Sonra sadece yolları eklemek ve uygulamak rotayı istediğiniz hostname belirtmek: Bu hızla yapılan biridir. öyleyse:

vb. Rotalarınızın nasıl düzenlendiğini bilmiyorum, ancak asıl nokta şu ki, hostname için ayrı rotalara sahip olabilirsiniz. Bundan sonra yaptıklarınızı yapabilmenizi sağlar.

+0

Siz efendim benim kahramanım! Sadece bunu test ettim ve mükemmel çalışıyor. –

+0

Bu harika. Tam olarak neye bakıyordum. Alan adı yönlendirmelerini barındırabileceğimiz bir site oluşturuyorum. Sitenin, alanları yönetmenin yanı sıra yönlendirmeleri olmasını istedim. Bu kısıtlamaya sahip bir rota eklemek, normal alanın ana makine alan adı altında olmasına izin verdi ve diğer alan adları buna göre yeniden yönlendirildi. Teşekkürler! –

İlgili konular