2017-04-18 99 views
0

我有一个Visual Studio 2015解决方案有两个项目:如何从Azure Web服务上的经典ASP网站调用C#类库?

  • 一个经典的ASP网站。
  • 一个C#类库。

如何调用C#方法从传统的ASP页面内?

我会将解决方案部署到Azure应用服务。

我知道我可以创建一个Web API,并调用它的方式。但我想知道是否有其他方式来做到这一点。

UPDATE:

我所做的C#类“COM可见”,并选中了“注册为COM互操作”选项,一切正常我的机器上。

但是当我发布的解决方案Azure的Web服务,这是行不通的。经典的ASP网页运行良好,但我在尝试创建对象时,此错误:

Server object error 'ASP 0177 : 800401f3' 
Server.CreateObject Failed 
/index.asp, line 34 
800401f3 

大有“注册为COM互操作”并不在Azure的应用服务工作。我知道我可以创建一个虚拟机并手动注册该DLL,但我宁愿使用Azure应用服务。

+3

为什么没有Server.CreateObject?使组件COM可见,然后Server.CreateObject。 –

+0

另一个可以考虑的选择是,如果不能用一些更现代的东西来替换你的传统ASP站点,那就要看它是如何访问数据层的。如果链接到.Net库只能作为从数据库执行简单CRUD的一种方式,那么从页面调用数据库的存储过程可能会更好。 – CDove

+0

虽然Server.CreateObject无法在Azure Web App中使用。我会尝试使COM可见。谢谢。 –

回答

1

我认为你提到的两种方法 - Web API(或类似的中介服务)和Server.CreateObject(需要一个COM可见的.NET程序集)是Classic ASP中的两个选项。

如果你想使用的.NET程序集/库不是COM可见,而不必访问源代码,你可以创建一个包装 - 你自己的.NET组件是COM可见,与传递方法 - 您可以从传统ASP调用您的程序集,并且您的程序集将所需的参数传递给您实际想要使用的库,并返回相应方法的结果。

+0

虽然Server.CreateObject无法在Azure Web App中使用。我会尝试使COM可见。谢谢 –

+0

@CesarDaniel,我不确定,但是如果是这样的话,你仍然可以使用Web API路径,或者在Azure虚拟机中托管ASP应用程序(这将允许图像中的Server.CreateObject)。 – CoolBots