无法通过IIS连接到SAP HANA

时间:2019-05-30 12:27:06

标签: c# iis ado.net sap hana


我正在开发一个在IIS上托管的Web应用程序,并且试图连接到SAP HANA失败。
在下面可以看到错误。

[NullReferenceException: Object reference not set to an instance of an object.]
   Sap.Data.Hana.HanaUnmanagedDll.SearchNativeDlls() +343
   Sap.Data.Hana.HanaUnmanagedDll..ctor() +17
   Sap.Data.Hana.HanaUnmanagedDll.get_Instance() +140
   Sap.Data.Hana.HanaConnection..cctor() +28

[TypeInitializationException: The type initializer for 'Sap.Data.Hana.HanaConnection' threw an exception.]
   Sap.Data.Hana.HanaConnection..ctor(String connectionString) +0
   TestHANAConnectionNoXAF.Controllers.HomeController..ctor() in C:\tmp\TestHANAConnectionNoXAF\TestHANAConnectionNoXAF\Controllers\HomeController.cs:16

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +139
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +105
   System.Activator.CreateInstance(Type type) +12
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +75

[InvalidOperationException: An error occurred when trying to create a controller of type 'TestHANAConnectionNoXAF.Controllers.HomeController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +242
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +258
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +77
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +1020
   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +195
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +128

为了调试该应用程序,我创建了一个测试应用程序,该程序不执行任何操作,但使用Sap.Data.Hana.v4.5 dll打开与数据库的连接。
我做了同样的工作,创建了从命令行运行的客户端应用程序。

第一次尝试,我仅使用已安装的HANA驱动程序的64位版本进行了测试。
客户端应用程序运行正常,Web应用程序崩溃并显示与上述相同的错误。
然后我安装了32位版本的HANA驱动程序,结果与以前相同。

注意,我用服务器的dll编译了两个应用程序,目标平台是AnyCPU。
系统规格:

  • Windows Server 2012 R2
  • 64位操作系统,基于x64的处理器
  • IIS 8
  • 网站
    集成了App Pool 4.0 启用的32位应用程序:false
  • Hana驱动程序版本:2.03.144.33424

我有另一台服务器,因为在进行此测试时已经部署了Web应用程序,并且它可以正常工作。该服务器与我现在正在操作的服务器规格相同,但Hana驱动程序版本为2.03.106.44071。

在下面,您可以找到我编写的用于连接到SAP HANA的代码。

HanaConnection conn = new HanaConnection("Server=<ip>:<port>;UserID=<user_id>;Password=<password>");
try
{
    conn.Open();
    conn.Close();
}
catch (HanaException exception)
{
    System.Diagnostics.Debug.WriteLine(exception.Errors[0].Source + " : " +
                     exception.Errors[0].Message + " (" +
                     exception.Errors[0].NativeError.ToString() + ")",
                     "Failed to connect");


    System.Diagnostics.Debug.WriteLine(exception);
}

可能是什么问题?
提前谢谢,
萨拉


0 个答案:

没有答案