与.Net连接器网关不匹配的RFC服务器

时间:2017-01-16 08:39:56

标签: c# .net sap

我正在开发一个运行为RFC Server的非常简单的应用程序。我安装了SAP Netweaver 7.5试用版。以下是启动服务器的代码:

private void button2_Click(object sender, EventArgs e)
    {

        RfcDestinationManager.RegisterDestinationConfiguration(new RfcDestinationConfig());
        RfcServerManager.RegisterServerConfiguration(new RfcServerConfig());

        Type[] handlers = new Type[1] { typeof(StfcConnectionStaticImpl) };

        RfcServer server = RfcServerManager.GetServer("PRD_REG_SERVER", handlers);

        server.Start();
    }

然后处理类:

class StfcConnectionStaticImpl
    {
        // The annotation binds the function (name) to its implementation
        [RfcServerFunction(Name = "STFC_CONNECTION")]
        public static void StfcConnection(RfcServerContext serverContext, IRfcFunction function)
        {
            Console.WriteLine("System Attributes: " + serverContext.SystemAttributes.ToString());

            function.SetValue("ECHOTEXT", function.GetString("REQUTEXT"));
            function.SetValue("RESPTEXT", "NCO3: Hello world.");

        }
    }

接下来是Rfc目标配置类:

public class RfcDestinationConfig : IDestinationConfiguration
{
    public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;

    public bool ChangeEventsSupported()
    {
        return false;
    }

    public RfcConfigParameters GetParameters(string destinationName)
    {
        if ("PRD_000".Equals(destinationName))
        {
            RfcConfigParameters parms = new RfcConfigParameters();
            parms.Add(RfcConfigParameters.AppServerHost, "172.18.3.22");
            parms.Add(RfcConfigParameters.SystemNumber, "00");
            parms.Add(RfcConfigParameters.User, "developer");
            parms.Add(RfcConfigParameters.Password, "Appl1ance");
            parms.Add(RfcConfigParameters.Client, "001");
            parms.Add(RfcConfigParameters.Language, "EN");
            parms.Add(RfcConfigParameters.PoolSize, "5");
            parms.Add(RfcConfigParameters.MaxPoolSize, "10");
            parms.Add(RfcConfigParameters.IdleTimeout, "600");
            return parms;
        }
        else return null;
    }
}

并持续使用Rfc服务器类:

public class RfcServerConfig : IServerConfiguration
{
    public event RfcServerManager.ConfigurationChangeHandler ConfigurationChanged;

    public bool ChangeEventsSupported()
    {
        return false;
    }

    public RfcConfigParameters GetParameters(string serverName)
    {
        if ("PRD_REG_SERVER".Equals(serverName))
        {
            RfcConfigParameters parms = new RfcConfigParameters();
            parms.Add(RfcConfigParameters.GatewayHost, "172.18.3.22");
            parms.Add(RfcConfigParameters.GatewayService, "sapgw00");
            parms.Add(RfcConfigParameters.ProgramID, "DOT_NET_SERVER");
            parms.Add(RfcConfigParameters.RepositoryDestination, "PRD_000");
            parms.Add(RfcConfigParameters.RegistrationCount, "5");
            return parms;
        }
        else return null;
    }
}

服务器启动完美,我在网关的注册正常。

SAP GATEWAY (SMGW)

来自Logged-on Client的问题因为我只看到外部客户端而不是注册程序:

Logged-on Client

我的问题是为什么我没有将程序作为注册服务器?

是否有一些SAP配置可以进行程序注册?

如果有人无法帮助我解决这个问题,那就太棒了。

谢谢,

罗南

0 个答案:

没有答案