在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"));

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

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

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))