Asp.net 网站无法启动默认.aspx(Windows 10专业版上的Apache 2.4;国际标准化组织10)

toiithl6  于 2023-01-17  发布在  Apache
关注(0)|答案(2)|浏览(147)

因此,我设置了一个Win10机器作为Apache服务器;构建VS 19Asp.netwebforms应用程序,在VS中运行时按预期工作。发布到C:\Apache24\htdocs文件夹。现在,我在ISP提供的“Internet IP地址”上设置端口转发以指向本地服务器。如果我使用任何浏览器(局域网外)访问该地址(例如http://xx.yy.zz.qq-出于安全原因不显示实际IP),我将看到标题为“index of /"的页面,以及我发布到该htdocs文件夹的文件列表。如果我将INDEX.HTML文件放入该文件夹,它将显示;但由于我看到Default.aspx是IIS默认文档列表中的第一个条目,而没有index.html,所以我仍然只看到文件列表,而不是aspx。我不认为我还没有建立域名到IP的绑定会对这个问题产生任何影响,但我不能肯定。有什么想法吗?正如你可能猜到的,我以前没有这样做过!:)). TIA!Jim
我确保网站的VS示例没有运行,以防万一可能导致IIS混乱;但我不认为会是这样。

fiei3ece

fiei3ece1#

如上所述,我看不出一个非.net服务器如何正确地运行/启动/处理需要IIS作为Web服务器的aspx页面?
我的意思是,IIS不能运行为Apache设计的网站,也不能说IBM的“web spere”web服务器。
我正在“努力”思考一个内置在.net framework中的应用程序如何与一个不是为与.net framework一起工作而设计的web服务器一起工作?
我的意思是,如果你有一台电脑,并且有一个word文档,那么你需要安装word来处理那个文档。
如果您的计算机上有PDF文件,那么您必须安装一些PDF软件才能使用该PDF文档。
Web服务器不是什么“魔法”盒子,而是一台安装了一些软件的平板电脑。因此,如果你在.net中构建一个aspx .netframework站点,那么这台电脑将需要安装.net framework,并且需要正确类型的软件来处理这些页面--在本例中是IIS。
现在,公平地说,你可以用. netcore来做这件事,因为. netcore可以在相当多的“任何”计算机上运行(支持Nigex)。然而,即使在这种情况下,他们也会假装和欺骗你,因为他们如何实现这个“魔术”是在你构建.NET核心应用程序时,构建过程包括整个Web服务器作为构建的一部分!2!3!(这个重量较轻的Web服务器(Kestrel)因此可以工作,如果你转发端口和请求说,从Apache,或相当多的任何Web服务器。但不要搞错这里,一个完整的.net核心兼容的web服务器被包括在那个构建中,因此那个.net web服务器仍然需要运行那个.net代码。
不幸的是,.net框架(相对于.net核心的选择)并没有在构建您的网站时包括整个Web服务器作为构建的一部分。
所以,.net framework站点需要正确的软件才能工作,而在这种情况下,正确的软件是名为IIS(Internet Information Services)的Web服务器。
你不能再建议/尝试/假设一些加载和阅读PDF文档的程序现在突然要消费和处理Excel文件或Word文件。
提示:软件构建到一个特定的代码库需要正确的软件来运行和工作。有点简单!!
那么,一台有网络服务器的计算机呢?那只是一台安装了软件的计算机,你需要在那台计算机上安装正确的软件来消费文件等等。它是设计出来的。
Apache Web服务器不能再使用为IIS设计的“应用程序”或“网站”,然后它可以使用其他文件等,这些文件是为100%不同的应用程序设计的。这是所有软件的工作方式,不清楚为什么你会认为Apache,或IIS,或Word或Excel在这里会有任何不同?
现在,有一个“mono”项目,它是.net框架的一个移植,允许.net框架在Linux上运行,有一些尝试以这种方式运行aspx页面的例子,但这是一个史诗般的混乱,真的不是一条路要走。
然而,正如所说,.net core系统确实可以在几乎任何平台上运行,而且它确实有上面提到的能够在Apache上运行的“魔术”,但在幕后,那个软件构建实际上包括了一个与.net core兼容的完整工作的Web服务器,而且那个完整的Web服务器包含在你的构建中,因此,有些人被.net核心网站可以在Apache上运行的魔术“愚弄”了。他们看起来可以,但实际上不是,在这个例子中(属于.net核心,而不是.net框架),网站似乎在Apache Web服务器上工作?不是,所发生的是Apache web服务器简单地将任何web请求传递到真实的工作和安装的。net核心web服务器!!!(因此Apache实际上只起到路由器或“传递”机器的作用,所有真正的Web处理都发生在名为Kestrel的.net核心Web服务器中)。
所以,你可以按照你的要求去做,但是你必须转储“web表单”,用aspx页面构建网站作为一个.net核心网站。如果你这样做了,那么是的你可以使用Apache,它会工作,但是在幕后,它只会工作,因为.net网站的构建过程也包括整个副本和工作副本的一个.net核心web服务器作为构建的一部分。如前所述,在构建过程中的这个魔术选项不适用于.net framework,但肯定适用于.net核心选择。
那么,在你使用Apache的情况下,为特定类型的Web服务器设计的软件必须使用正确类型的Web服务器。IIS也是如此--它不能使用或运行为Apache设计的网站。我的意思是,软件在桌面上的工作方式与软件在Web服务器上的工作方式没有任何不同

jv4diomz

jv4diomz2#

用.aspx实现的页是ASP.NET Web窗体框架的一部分。此框架是.NET Framework的一部分。承载Web窗体应用程序所需的主服务器是IIS(Internet信息服务)。由于您使用的是Windows计算机,如果你愿意,你可以研究一下如何设置IIS来托管你的Web窗体站点。2如果你仍然想使用Apache作为你站点的前端,您甚至可以让它代理对IIS中托管的站点的请求,尽管这样的设置可能没有什么好处,而且非常复杂。
Apache开箱即用不支持托管Web窗体应用程序。有一个名为Mono的开源项目,它寻求实现.NET Framework的替代版本,并允许使用替代Web服务器,如Apache。但Mono在很大程度上已被.NET Core取代。
NET Core是.NET Framework的正式替代品。默认情况下,它是开放源代码和跨平台的,并且在.NET Core上运行的ASP.NET Core Web Framework包含Kestrel Web服务器。这可以与Apache一起使用(或任何其他Web服务器)前面,充当反向代理。这不是什么魔术,而是当今Web应用程序相当标准的方法。然而,ASP.NET核心不包括Web窗体框架,因此如果您打算继续使用.NET生态系统,则需要使用ASP.NET核心支持的更现代的替代方案重新实现您的应用程序。ASP.NET核心中有许多替代方案,包括MVC、Blazor、Razor Pages和Web API。

相关问题