在c#中使用目标配置时,不允许使用sap硬编码登录参数
本文关键字:sap 编码 参数 不允许 登录 目标 配置 | 更新日期: 2023-09-27 18:01:32
当我尝试动态连接到SAP服务器时,我得到的错误如下
使用目标配置时不允许硬编码登录参数
谁来帮帮我
我需要从codebehind动态发送所有参数,而不是从Web.config
web。配置它的工作很好…但不是在这里
我的代码是这样的
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))