PHP ile ASP.NET ve sorunlar için joker eşleme

3 Cevap

Ben bir uygulama dili olarak C # ile. NET 3.5 ile yazılmış olması. Ben Web Forms kullanarak, ama benim global dosyasında tanımlanmış yolları ile url yönlendirme kullanıyorum. Her şey beklendiği gibi çalışmaktadır. Güzel yollar için sırayla (bakınız:? Yerine user.aspx arasında user/665 uid = 665) düzgün çalışması için, ben (evreleme, ya da üretim, yerel kutu test değil) IIS5.1 bir joker eşleme eklemek zorunda 2.0 çerçevesi için aspnet_isapi dosyası. Her şey gayet iyi çalışıyor.

Şimdi, benim site PHP için bir eklenti gerekir. Ancak PHP dosyaları şimdi nedeniyle vahşi kart eşleme ASP.NET tarafından hizmet ediliyor ve dolayısıyla PHP yorumlayıcısı tarafından işlenmez. Bunu aşmanın bir yolu var mı? Ben ASP.NET çerçeve tarafından işlenen bütün PHP isteklerini almak ve onları PHP motoru yönlendirilir olacak benim web uygulaması için işleyici çeşit eklemek gerekir? Daha kolay bir yolu var mı? Belki web.config (PHP dosyaları) onları dışlamak ve onları doğru PHP motoru tarafından hizmet için bir yol?

Thanks all! -Steve

3 Cevap

Bu bir çözüm, ancak zarif bir yolu (IMHO) değil:

  1. Bir sanal dizin oluşturun
  2. (Bu durumda, bir PHP eklentisi) dosyaları ile klasöre işaret var
  3. Bunu uygun izinleri verin
  4. IIS sanal dizini için yapılandırma seçeneklerini değiştirin ve bu dizinin için joker eşleme çıkarıldığından emin olun.

Bu benim durum için bir cazibe gibi çalışır. Ancak, sanal dizinleri ile uğraşmak zorunda değil herhangi bir yolu var mı?

Sorun PHP uzantısı kayıtlı olması gerekiyor.

  1. IIS Yöneticisi'nde Varsayılan Web Sitesi üzerinde sağ tıklayın -> Özellikler -> Ana Dizin -> Yapılandırma
  2. Başvuru altında eşleştirmeleri söyledi. Php ilave edilir ve php.exe işaret emin olun. . Uzantısı php, yürütülebilir dosya yolu: C: Bu gibi bir giriş olmalıdır \ PHP \ php.exe% s% s

Anladığım kadarıyla, sorun ASP.NET rota PHP isteklerini çalışırken, bu yüzden ne yapacağını Global.asax içinde yolları bir StopRoutingHandler () eklemektir olmasıdır. Böyle bir şey çalışması gerekir:

routes.Add(new Route("{resource}.php/{*pathInfo}", new StopRoutingHandler()));

Edit: yolları sırayla işlenir, bu yüzden senin yollarının üstüne eklersiniz dikkatli olun.