PHP和ASP.Net可以在IIS 7.5中的同一网站中一起运行吗?

时间:2011-01-21 17:20:51

标签: php asp.net iis iis-7 iis-7.5

我们网站的一部分是用PHP完成的,我们网站的一部分是在ASP.Net中完成的。我们刚刚安装了一台安装了IIS 7.5的Windows Server 2008 R2的新Web服务器。

我知道IIS 7+支持PHP,但PHP和ASP.Net可以在IIS中的单个网站中并行运行,或者我是否必须为PHP页面和一个Web设置一个网站ASP.Net页面的网站?

7 个答案:

答案 0 :(得分:22)

您应该能够在同一站点中运行,但请确保该站点的AppPool运行“经典”ASP.NET池配置。默认的AppPool通过ASP.NET路由所有内容,您不希望PHP页面使用它。

除此之外,你应该没事。查询字符串,文件和后端数据库将是在页面之间共享数据的最佳方式。

答案 1 :(得分:9)

是的,你可以在同一个网站上使用它们。由于文件扩展名映射到特定的外部进程,因此它们是独立调用的。你甚至可以使用Asp.Net通过在IIS中实现通配符映射来保护带有FormsAuthentication的.php文件(我知道6/7有这个,不确定5)。在它们之间混合数据非常棘手,因为它们将具有单独的外部进程,从而分离会话。大多数cookie都可以在两者中读取,但安全的cookie不会。

答案 2 :(得分:3)

是的,你可以,但请注意:

如果您的" root"以及其下的文件夹中有asp.net应用程序

(例如http://root.com/aspnetapp1/), 如果您按照these suggestions关于" urlrewrite"对于wordpress中的固定链接,如果您尝试配置"通配符处理程序"在apsnetapp1。

为避免出现问题,wordpress root app的web.config也必须具有以下设置:

    <location path="." inheritInChildApplications="false"> 
    <system.webServer>
...
    </system.webServer>
</location>

否则,您的通配符处理程序将永远不会引发因为来自root的index.php将捕获您对url的所有请求,如:http://root.com/aspnetapp1/api/ *

答案 3 :(得分:1)

是的,PHP可以无缝地实现到ASP.NET 3.5 / 4.0

转到http://phalanger.codeplex.com/(或http://www.php-compiler.net/)并下载最新版本的Phalanger。安装到Visual Studio中,瞧!

  

Phalanger - .NET的PHP编译器

     

欢迎使用Phalanger - 全功能的PHP运行时&amp;编译器   .NET / Mono框架。 Phalanger是现代开源实现   PHP,与大量现有PHP代码兼容。在   此外,Phalanger为PHP应用程序开发人员提供了许多新功能   可能性;从提高性能和使用现代   环境,利用无缝的独特.NET集成。

答案 4 :(得分:0)

是的,这不是问题。甚至一些Windows共享主机也提供PHP计划 - Windows Hosting PHP

答案 5 :(得分:0)

可以在Windows框中使用

ASP PHP 。只要它们完全分开并且不依赖于彼此。例如,使用查询字符串(i.e file.php?var=1&var2=bla)当需要将这些变量传输到ASP文件时,事情会变得混乱。反之亦然。

只要这两个系统彼此完全独立,那么它应该可以正常工作。

您可能还会发现与 Cookie 会话不兼容。那些也可以通过,但不容易。

答案 6 :(得分:0)

您可以在同一个网站上运行,但除非您设置某种邮件系统或共享存储空间,否则无法相互通信。它们基本上是完全不同性质的应用程序。

另一种可能性是从PHP调用您的.NET代码:

用C#编写的一段代码:

string javascript = "";
Microsoft.Ajax.Utilities.Minifier m = new Microsoft.Ajax.Utilities.Minifier();
Microsoft.Ajax.Utilities.CodeSettings settings = new Microsoft.Ajax.Utilities.CodeSettings();
settings.OutputMode = Microsoft.Ajax.Utilities.OutputMode.SingleLine;
settings.PreserveFunctionNames = false;
string minified = m.MinifyJavaScript(javascript, settings);

在PHP上看起来像这样:

$minifier = netMinifier::Minifier_Constructor();
$settings = netCodeSettings::CodeSettings_Constructor();
$csssettings = \ms\Microsoft\Ajax\Utilities\netCssSettings::CssSettings_Constructor();
$settings->OutputMode(\ms\Microsoft\Ajax\Utilities\netOutputMode::SingleLine());
$settings->PreserveFunctionNames(FALSE);
$settings->QuoteObjectLiteralProperties(TRUE);
$result = $minifier->MinifyStyleSheet($css, $csssettings, $settings)->Val();

自:

http://www.drupalonwindows.com/en/blog/calling-net-framework-and-net-assemblies-php