繁体   English   中英

Asp.net 网站未启动 default.aspx(Windows 10 Pro 上的 apache 2.4;IIS 10)

[英]Asp.net website not starting default.aspx (apache 2.4 on Windows 10 Pro; IIS 10)

所以,我设置了一个Win10盒子作为Apache服务器; 内置 VS19 Asp.net webforms 应用程序,在 VS 中运行时按预期工作。 发布到 C:\Apache24\htdocs 文件夹。 现在,我在 ISP 提供的“Inte.net IP 地址”上设置端口转发以指向我的本地服务器。 如果我使用任何浏览器(在我的 LAN 之外)访问该地址(例如http://xx.yy.zz.qq - 出于安全原因未显示实际的 IP)我将看到标题为“index of /”的页面,并且我发布到该 htdocs 文件夹的文件列表。 如果我在该文件夹中放入 INDEX.HTML 文件,它将显示; 但由于我看到 Default.aspx 作为 IIS 默认文档列表中的第一个条目,没有 index.html,我仍然只看到文件列表,而不是 aspx。 我认为我尚未建立域名到 IP 绑定这一事实不会对这个问题产生任何影响,但我不能确定。 有什么想法吗? 您可能会猜到,我以前没有这样做过:.))。 TIA! 吉姆

我确保该网站的 VS 实例没有运行,以防可能导致 IIS 混淆; 但我认为情况并非如此。

如前所述,我看不到非 .net 服务器如何正确运行/启动/处理需要 IIS 作为 web 服务器的 aspx 页面?

我的意思是,IIS 不能运行为 Apache 设计的 web 站点,也不能说 IBM“web spere”web 服务器。

我正在“努力”思考在 .net 框架中构建的应用程序如何与 web 服务器一起工作,而该服务器并非设计为与 .net 框架一起工作?

我的意思是,如果您有一台计算机,并且有一个 word 文档,那么您需要安装 word 才能使用该文档。

如果您的计算机上有一个 PDF 文件,那么您必须安装一些 PDF 软件才能使用该 PDF 文件。

一台web服务器不是什么“魔法”盒子,而是一台平面简电脑,上面安装了一些软件。 因此,如果您在 .net 中构建一个 aspx .net 框架站点,那么该计算机将需要安装 .net 框架,并且需要正确类型的软件才能使用这些页面 - 在本例中为 IIS。

现在,公平地说,您可以使用 .net 核心执行此操作,因为 .net 核心可以在相当多的“任何”计算机(支持 nigex)上运行。 然而即使在那种情况下,他们也会假装和欺骗你,因为他们如何实现这个“魔术”是当你构建 .net 核心应用程序时,构建过程包括一个完整的 WEB 服务器作为构建的一部分,.,(这个更轻的重量web服务器(kestrel)因此,如果您转发端口和请求,则可以工作883358842617888,或任何web服务器。服务器仍然需要运行该 .net 代码。

不幸的是,.net 框架(与 .net 核心选择相反)不会在构建您的 web 站点时将整个 WEB 服务器作为构建的一部分。

因此,.net 框架站点需要正确的软件才能工作,在这种情况下,正确的软件是名为 IIS(Inte.net 信息服务)的 web 服务器。

您不能再建议/尝试/假设某个加载和读取 PDF 文档的程序现在突然要使用和处理 Excel 文件或 word 文件。

提示:针对特定代码库构建的软件需要正确的软件才能运行和工作。 有点简单!!

那么,一台带有 web 服务器的计算机? 那只是一台安装了软件的计算机,您需要在该计算机上安装正确的软件才能使用文件等。它是设计形式。

Apache web 服务器不能再使用为 IIS 设计的“应用程序”或“网站”,然后它可以使用其他文件等,这些文件设计用于 100% 不同的应用程序。 这就是所有软件的工作方式,不清楚为什么您会认为 Apache、IIS、word 或 Excel 在这里的工作方式完全不同?

现在,有一个“mono”项目,它是 .net 框架的一个端口,它允许 .net 框架在 Linux 上运行,并且有一些尝试以这种方式运行 aspx 页面的示例,但它是一个银河系的混乱史诗般的比例,真的不是通往 go 的路。

然而,如前所述,.net 核心系统确实可以在任何平台上运行,并且它确实具有能够在 Apache 上运行的上述“魔术”,但在幕后,该软件构建实际上包括一个完整的工作 web 服务器这是 .net 核心兼容,并且整个 web 服务器包含在您的构建中,因此有些人被这个魔术“愚弄”了 .net 核心 web 站点可以在 Apache 上运行。它们看起来可以,但事实并非如此,并且在该示例中(.net 核心,而不是 .net 框架),该站点似乎可以在 Apache web 服务器上运行? 不,发生的是 Apache web 服务器简单地将任何 web 请求交给实际工作并安装 .net 核心 web 服务器,,。 (因此 Apache 实际上仅充当路由器或“切换”机器,所有 REAL web 处理都发生在 .net 核心 web 服务器中,称为 kestrel)。

因此,您可以按照您的要求进行操作,但您必须转储“Web 表单”并使用 aspx 页面构建 web 站点作为 .net 核心 web 站点。 如果你这样做,那么是的,你可以使用 Apache,它会工作,但在幕后,它只工作因为 .net 站点的构建过程还包括 .net 核心 web 服务器的完整副本和工作副本作为构建。 如前所述,构建过程中的这个魔术选项不适用于 .net 框架,但肯定适用于 .net 核心选项。

那么,在您使用 Apache 的情况下? 为特定类型的 web 服务器设计的软件必须使用正确类型的 web 服务器。 IIS 也是如此 - 它不能使用或运行为 Apache 设计的 web 站点。我的意思是,软件在桌面上的工作方式与软件在 web 服务器上的工作方式没有任何不同

您使用.aspx 实现的页面是 ASP.NET Web Forms 框架的一部分。 该框架是 .NET 框架的一部分。 托管 Web Forms 应用程序所需的主服务器是 IIS (Inte.net Information Services)。 由于您在 Windows 机器上工作,如果您愿意,可以研究如何设置 IIS 来托管您的 Web Forms 站点。 如果您仍想使用 Apache 作为您站点的前端,您甚至可以让它代理请求到您在 IIS 中托管的站点,尽管这样的设置可能没有什么好处而且很复杂。

开箱即用的 Apache 不包括对托管 Web Forms 应用程序的支持。 有一个名为 Mono 的开源项目旨在实现 .NET Framework 的替代版本,并允许使用替代 web 服务器,例如 Apache。但是 Mono 在很大程度上已被 .NET Core 取代。

.NET Core 是 .NET Framework 的官方替代品。 默认开源跨平台,运行在.NET Core上的ASP.NET Core web框架包含一个Kestrel web服务器。 这可以与它前面的 Apache(或任何其他 web 服务器)一起使用,充当反向代理。 这不是魔术,而是如今 web 应用程序的一种相当标准的方法。 但是,ASP.NET Core 不包含 Web Forms 框架,因此如果您打算留在 .NET 生态系统中,则需要在 ASP.NET Core 支持的更现代的替代方案中重新实现您的应用程序。 ASP.NET Core有很多替代方案包括MVC,Blazor,Razor Pages,Web API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM