.Net Core在使用SAP的Web Service会遭遇到一些错误,貌似目前并不支持SAP中的Web Service,我们需要曲线实现下调用过程:

  经测试,不再需要Framework项目中转,System.ServiceModel的几个Nuget升级到最新版即可。现在生成的代码已经有所差异了,简单的更改即可使用。

  

  

  •  使用Framework的项目来“添加服务引用”,

  

  •   找到生成目录下的Reference.cs文件并打开

  • 因该命名空间已经是SAPInterface.FAChange3下了,所以移除掉该文件中所有的"SAPInterface.FAChange3."字样。
  • 文件中我们看到有个接口与类的名称一样,这是错误的。我们给接口名称前面增加I,改为IZFAMS_AS02。

  • 修改掉以下几处应该使用接口的内容:

  • 将该文件保存并拷贝到Core项目中,修改命名空间为Core的命名空间
  • 调用该文件,示例方法:

  

public class TransferWsR
{
private ZFAMS_ABT1NChannel callClient { get; set; }
public TransferWsR()
{
// 创建 HTTP 绑定对象
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
var appSection = IocManager.Instance.Resolve<IConfiguration>().GetSection("AppSettings");
// 根据 WebService 的 URL 构建终端点对象
var wsUrl = appSection["SAPWsTransferUrl"];
var endpoint = new EndpointAddress(wsUrl); // 创建调用接口的工厂,注意这里泛型只能传入接口
var factory = new ChannelFactory<ZFAMS_ABT1NChannel>(binding, endpoint);
factory.Credentials.UserName.UserName = appSection["SAPUserName"];
factory.Credentials.UserName.Password = appSection["SAPPassword"];
// 从工厂获取具体的调用实例
callClient = factory.CreateChannel();
callClient.OperationTimeout = new TimeSpan(, , );
} public TransferOutput DoTransfer(TransferInput input)
{
var rq = new ZFAMS_ABT1NRequest();
var data = new ZFAMS_ABT1NInput
{
IT_ABT1N = new ZST_ABT1N[]
{
AutoMapper.Mapper.Map<ZST_ABT1N>(input)
}
};
rq.ZFAMS_ABT1N = data;
try
{
var rp = callClient.ZFAMS_ABT1N(rq);
var result = rp.ZFAMS_ABT1NResponse.ET_RETURN.FirstOrDefault();
if (result == null)
{
throw new Exception("调用结果为Null!");
} return AutoMapper.Mapper.Map<TransferOutput>(result); }
catch (Exception ex)
{ throw ex;
} }
}

最新文章

  1. 外边距塌陷之clearance
  2. C# 全角和半角转换以及判断的简单代码
  3. Zedboard安装桌面系统ubuntu及opencv(1)
  4. FMDB浅析
  5. java ---运算符
  6. JavaScript:JavaScript中常见获取对象元素的方法
  7. hiho(1081),SPFA最短路,(非主流写法)
  8. RMAN备份与恢复之数据文件
  9. c# winform 关于DataGridView的一些操作(很全,绝对够用)
  10. .net导出Word的一种方法
  11. 转:C语言申请内存时堆栈大小限制
  12. FS SIP呼叫的消息线程和状态机线程
  13. 【Unity编程】欧拉角与万向节死锁(图文版)
  14. common lisp的宏的工作模式
  15. 【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)
  16. 一些不常用但又很有用的css小tips
  17. OpenCV3编程入门笔记(一)
  18. 计算机组成原理——主存与cache的映射关系
  19. Linux驱动:内核等待队列
  20. VS Code设置中文插件

热门文章

  1. mac解压7z格式文件
  2. Apache RocketMQ 的过去、现在和未来 原创: DataPipeline DataPipeline数见科技 前天
  3. CentOS7系统下GitLab的安装、汉化、修改默认端口、开启发送邮箱
  4. setShadpwLayer实现阴影效果
  5. API的查看
  6. LVS搭建负载均衡集群(二)——DR模式
  7. (四)Centos之查询目录中内容命名ls
  8. 【leetcode_easy_$】577. Employee Bonus
  9. iOS技术面试02:内存管理
  10. talking data 集成