U9C 服务
U9C的所有接口都是该种服务,即是WCF服务。
提示
有时出现500 System.ServiceModel.ServiceActivationException
错误
检测内存是否超过95%
新建
打开UBF,新建解决方案,选择位置及输入方案名称
![新建解决方案](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services1.png)
打开解决方案页签,选择顶级节点RestSV
,右击新建,选择服务项目
![服务项目](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services2.png)
切换模型视图
页签选择顶级节点RestSV
,然后切换到属性
页签,更改配件名
![更改配件名](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services3.gif)
切换模型视图
页签选择倒数第二节点命名空间RestSV
,然后切换到属性
页签,更改名称
![更改名称](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services4.gif)
切换模型视图
页签,双击打开末级节点类图RestSV
,将工具箱服务
拖拽到类图中。
右击服务
属性,更改名称
、显示名称
![服务](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services5.png)
拖拽数据传输对象
到RestSV
类图,右击属性,更改名称
和显示名称
,然后在详细信息
页签里添加相应属性
![返回DTO](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services6.png)
继续拖拽数据传输对象
到RestSV
类图,右击属性,更改名称
和显示名称
,然后在详细信息
页签里添加相应属性
![输入DTO](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services7.png)
选择服务
,更改返回类型
选择返回部门DTO
,更改事务类型
为Required
,然后在详细信息
页签里添加属性类型选择部门DTO
![调整服务](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services8.png)
切换解决方案
选择顶级节点,右击构造
![构造](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services9.png)
业务逻辑
用VS打开UFIDA.U9.CUST.RestSV.sln
,在CreateDepartmentExtend.cs
文件里的Do
方法写业务的逻辑。
![项目结构](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services10.png)
部署
位于UBF新建目录时bulk\Unconfiged\MetadataScript
文件夹下
执行UFIDA.U9.CUST.RestSV_Resource.sql
和UFIDA.U9.CUST.RestSV_Metadata.sql
两个脚本
位于UBF新建目录时Code\RestSV
文件夹下
点击AutoBuild.bat
调试
调试工具
位于X:\yonyou\U9ClientCE\ClientSystemManage\Tools
文件夹下打开WebServiceStudio.exe
![调试](https://nas.ilyl.life:8092/yonyou/u9c/interface/services/services11.gif)
代码调试
VS新建控制台,引用右击添加服务引用
,点击左下角高级
按钮,在点击左下角添加Web引用
输入带.svc
的地址,自动生成代理
var client = new Proxy.CreateDepartmentStub();
client.Url = "http://127.0.0.1/U9C/Services/UFIDA.U9.CUST.RestSV.ICreateDepartment.svc";
var context = CreateContextObj();
var result= client.Do(context,new UFIDAU9CUSTRestSVInputDTOData() {m_code="006",m_name="质量部门"},out MessageBase[] msg);
public object CreateContextObj()
{
var threadContext = new Proxy.ThreadContext();
var dic = new Dictionary<object, object>();
dic.Add("OrgID", "");
dic.Add("UserID", "");
dic.Add("CultureName", "zh-CN");
dic.Add("EnterpriseID", "");
dic.Add("DefaultCultureName", "zh_CN");
threadContext.nameValueHas = dic.Select(x => new ArrayOfKeyValueOfanyTypeanyTypeKeyValueOfanyTypeanyType() { Key=x.Key,Value=x.Value}).ToArray();
return threadContext;
}