在ASP.NET中使用托管C++作为代码后置

在.NET框架中,虽然支持多种语言编译器,但ASP.NET默认只解析C#、VB.NET和JScript三种语言。要使用ASP.NET不支持的语言,如托管C++,需要绕过ASP.NET的解析器。实现这一目的的方法称为“代码后置”(code-behind)。此方法适用于任何支持.NET编译器的语言(例如COBOL)。本文将通过一个著名的“Hello World”示例,展示如何在ASP.NET页面中使用托管C++作为代码后置。

创建ASP.NET文件

首先,创建一个简单的ASP.NET文件,命名为HelloWorldMC.aspx。此文件中最关键的部分是Inherits属性,它告诉ASP.NET查找一个代码后置文件(即编译后的程序集)。

<%@ Page AutoEventWireup="false" Inherits="HelloWorldMC" %> <html> <head> <title>HelloWorld MC++</title> </head> <body> <form runat="server" ID="Form1"> <asp:Button id="Button1" runat="server" Text="点击" OnClick="SayHello" Width="172px"></asp:Button> </form> </body> </html>

创建托管C++代码后置文件

接下来,创建托管C++文件,作为代码后置文件,命名为HelloWorldMC.aspx.cpp。这里遵循了Visual Studio.NET的命名约定。重要的是,要保持.aspx文件和.cpp文件中服务器控件的名称一致。例如,.aspx文件中的id="Button1"与代码后置文件中的Button* Button1相对应,这将它们绑定到<asp:Button id="Button1" runat=server></asp:Button>控件。同时,请记住,函数SayHello必须是public的,以便.aspx页面可以访问它。

#using <system.dll> #using <mscorlib.dll> #using <system.web.dll> using namespace System; using namespace System::Web::UI::WebControls; public __gc class HelloWorldMC : public System::Web::UI::Page { protected: Button* Button1; public: void SayHello(Object* sender, EventArgs* e) { Button1->Text = "Hello MC++ World"; return; } };

编译项目

确保HelloWorldMC.aspx和HelloWorldMC.aspx.cpp文件放置在IIS Web服务器的根目录下(例如C:\Inetpub\wwwroot)。如果根目录下不存在bin子目录,请创建它(例如C:\Inetpub\wwwroot\bin)。以下命令行语法将编译并创建代码后置文件,并将其放置在bin目录中。请确保此命令是在Web服务器根目录下执行的。

cl /clr HelloWorldMC.aspx.cpp /link /dll /out:bin\HelloWorldMC.dll
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485