在C#中使用目标配置时,不允许使用SAP硬编码登录参数

当我尝试动态连接到SAP服务器时,我收到的错误就像

使用目标配置时不允许使用硬编码登录参数

任何人都帮助我

我需要从代码隐藏中发送所有参数而不是从Web.config发送

从web.config它工作正常..但不是在这里

我的代码是这样的

SAPSystemConnect objSapConfig = new SAPSystemConnect(); RfcDestination objSapdestination = null; RfcDestinationManager.RegisterDestinationConfiguration(objSapConfig); RfcConfigParameters objParameter = new RfcConfigParameters(); objParameter.Add(RfcConfigParameters.AppServerHost, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.Client, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.Password, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.SystemNumber, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.User, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.Language, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.LogonGroup, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.PoolSize, Convert.ToString("XXX")); objParameter.Add(RfcConfigParameters.PeakConnectionsLimit, Convert.ToString("5")); objParameter.Add(RfcConfigParameters.IdleTimeout, Convert.ToString("XXX")); //objParameter.Add(RfcConfigParameters.Name, Convert.ToString("XXX")); objSapdestination = RfcDestinationManager.GetDestination(objParameter); RfcCustomDestination customDest = objSapdestination.CreateCustomDestination(); IRfcFunction func = customDest.Repository.CreateFunction("XXX"); RfcRepository objSapRepository = objSapdestination.Repository; // Calling Sap Function IRfcFunction objSapDataFunction = objSapRepository.CreateFunction(Convert.ToString("XXX")); objSapDataFunction.SetValue("XXX", "XXX"); objSapDataFunction.Invoke(objSapdestination); // Filling SapData into Table IRfcTable objSapTable = objSapDataFunction.GetTable(Convert.ToString("GIT_DATA")); 

看一下这个。 这只是一个演示代码。

 public class Program { static void Main(string[] args) { SapConnection con = new SapConnection(); RfcDestinationManager.RegisterDestinationConfiguration(con); RfcDestination dest = RfcDestinationManager.GetDestination("NSP"); RfcRepository repo = dest.Repository; IRfcFunction fReadTable = repo.CreateFunction("ZSOMA"); fReadTable.SetValue("I_NRO1", 1); fReadTable.SetValue("I_NRO2", 2); fReadTable.Invoke(dest); var result = fReadTable.GetValue("E_RESULT"); Console.WriteLine(result.ToString()); Console.ReadLine(); } } public class SapConnection : IDestinationConfiguration { public RfcConfigParameters GetParameters(string destinationName) { RfcConfigParameters conf = new RfcConfigParameters(); if (destinationName == "NSP") { conf.Add(RfcConfigParameters.AppServerHost, "sap-vm"); conf.Add(RfcConfigParameters.SystemNumber, "00"); conf.Add(RfcConfigParameters.SystemID, "xxx"); conf.Add(RfcConfigParameters.User, "yourusername"); conf.Add(RfcConfigParameters.Password, "yourpassword"); conf.Add(RfcConfigParameters.Client, "001"); } return conf; } public bool ChangeEventsSupported() { return true; } public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged; } 

在这种情况下,我会提示用户输入密码。 我会使用一个对话框,用密码字符掩盖文本。

 Dim value As String value = InputBox("Security Check", " Enter password", "*") objParameter.Add(RfcConfigParameters.Password, Convert.ToString(value))