C#调用dynamic的API

话说JAVA调用Dynamci 的API,费了很多精力没有成功,只能转身投入微软的怀抱了,我要把API转成webservice,然后再被其他程序调用。
1.新建一个SAP.net 空web应用程序
2.添加新建项--“web服务”
3.将示例代码拷贝进来
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Web;
using System.Web.Services;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Threading.Tasks;

 一大堆错误找不到引用的,在引用找打对应的目标添加引用
4.执行代码:错误1
  Stream data = await hrm.Content.ReadAsStreamAsync();
提示:无法将类型“System.Threading.Tasks.Task”隐式转换为“System.IO.Stream”
提示:“await”运算符只能用于异步方法中。请考虑用“async”修饰符标记此方法,并将其返回类型更改为“Task
修改成Stream data = hrm.Content.ReadAsStreamAsync().Result;

5.修改修饰符
添加【webmethod】  并将方法的修饰符修改为public,测试可以看到webservice的方法。

6.发布
发布选择发布到文件,将发布好的文件夹拷贝到其他机器。

7.IIS中添加站点,设置密码
添加站点,设置目录;
在服务器上创建一个本地账户
在IIS站点中的“身份验证”--基本设置--连接为--指定刚才创建的用户,设置密码

8.测试webservice ,收到如下错误
当前标识(WIN-C\crm)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限
将Temporary ASP.NET Files 和c:\windows\temp文件夹增加了crm用户的权限,webservice服务可以调用。

9.异机访问
本机可以访问webservice的方法,但是其他机器访问提示:测试窗体只能用于来自本地计算机的请求,原因是没有开启远程访问,需要修改web.configure文件。
在web.config的中间加入如下配置节内容
   
     
     

         
           
           
           
           
         


   

10.生成wsdl文件
在浏览器地址的webservice地址后面加上?WSDL ,出来的页面另存为webservice.wsdl, 然后将这个文件拷贝到站点就可以了。不需要使用专门的工具去转换。

11.webservice密码保护
using System.Web.Services.Protocols;   否则soapheader 就找不到命名空间.

你可能感兴趣的:(编程体验,Cloud,webservice)