zoukankan
html css js c++ java
Reporting Services动态引用WebServices发布报表
WebClient web
=
new
WebClient();
web.Credentials
=
System.Net.CredentialCache.DefaultCredentials;
Stream stream
=
web.OpenRead(
"
WebServices地址
"
);
//
2. 创建和格式化 WSDL 文档。
ServiceDescription description
=
ServiceDescription.Read(stream);
//
3. 创建客户端代理代理类。
ServiceDescriptionImporter importer
=
new
ServiceDescriptionImporter();
importer.ProtocolName
=
"
Soap
"
;
//
指定访问协议。
importer.Style
=
ServiceDescriptionImportStyle.Client;
//
生成客户端代理。
importer.CodeGenerationOptions
=
CodeGenerationOptions.GenerateProperties
|
CodeGenerationOptions.GenerateNewAsync;
importer.AddServiceDescription(description,
null
,
null
);
//
添加 WSDL 文档。
//
4. 使用 CodeDom 编译客户端代理类。
CodeNamespace nmspace
=
new
CodeNamespace();
//
为代理类添加命名空间,缺省为全局空间。
CodeCompileUnit unit
=
new
CodeCompileUnit();
unit.Namespaces.Add(nmspace);
ServiceDescriptionImportWarnings warning
=
importer.Import(nmspace, unit);
CodeDomProvider provider
=
CodeDomProvider.CreateProvider(
"
CSharp
"
);
CompilerParameters parameter
=
new
CompilerParameters();
parameter.GenerateExecutable
=
false
;
parameter.GenerateInMemory
=
true
;
parameter.ReferencedAssemblies.Add(
"
System.dll
"
);
parameter.ReferencedAssemblies.Add(
"
System.XML.dll
"
);
parameter.ReferencedAssemblies.Add(
"
System.Web.Services.dll
"
);
parameter.ReferencedAssemblies.Add(
"
System.Data.dll
"
);
CompilerResults result
=
provider.CompileAssemblyFromDom(parameter, unit);
//
5. 使用 Reflection 调用 WebService。
if
(
!
result.Errors.HasErrors)
{
Assembly asm
=
result.CompiledAssembly;
Type TRptService
=
asm.GetType(
"
ReportingService
"
);
//
如果在前面为代理类添加了命名空间,此处需要将命名空间添加到类型前面。
object
objRptService
=
Activator.CreateInstance(TRptService);
//
获取实例
//
设置Credentials属性值(xml web service客户端的验证凭据)
PropertyInfo pRptServiceCredentials
=
TRptService.GetProperty(
"
Credentials
"
);
pRptServiceCredentials.SetValue(objRptService, System.Net.CredentialCache.DefaultCredentials,
null
);
//
获取CredentialRetrievalEnum的值,用来存储数据源的密码是否保存
Type TCredentialRetEnum
=
asm.GetType(
"
CredentialRetrievalEnum
"
);
//
对数据源的定义并且发布到服务器.
Type TDSDefinition
=
asm.GetType(
"
DataSourceDefinition
"
);
object
objDSDefinition
=
Activator.CreateInstance(TDSDefinition);
PropertyInfo pCredentialRetrieval
=
TDSDefinition.GetProperty(
"
CredentialRetrieval
"
);
pCredentialRetrieval.SetValue(objDSDefinition,
Enum.Parse(TCredentialRetEnum, "Store", false)
,
null
);
SetProperty(objDSDefinition, sConnect,
"
数据库连接信息
"
, TDSDefinition);
SetProperty(objDSDefinition,
true
,
"
Enabled
"
, TDSDefinition);
SetProperty(objDSDefinition,
true
,
"
EnabledSpecified
"
, TDSDefinition);
SetProperty(objDSDefinition,
"
SQL
"
,
"
Extension
"
, TDSDefinition);
SetProperty(objDSDefinition,
true
,
"
ImpersonateUserSpecified
"
, TDSDefinition);
SetProperty(objDSDefinition,
"
数据库登陆名
"
,
"
UserName
"
, TDSDefinition);
SetProperty(objDSDefinition,
"
数据库登陆密码
"
,
"
Password
"
, TDSDefinition);
SetProperty(objDSDefinition,
false
,
"
WindowsCredentials
"
, TDSDefinition);
MethodInfo MCreateDS
=
TRptService.GetMethod(
"
CreateDataSource
"
);
object
[] Paramers
=
new
object
[]
{ "报表数据库连接信息",
"
报表存放目录
"
,
true
, objDSDefinition,
null
}
;
MCreateDS.Invoke(objRptService, Paramers);
//
发布报表文件.
MethodInfo MCreateRPT
=
TRptService.GetMethod(
"
CreateReport
"
);
object
[] ParamersRPT
=
new
object
[]
{ "报表文件名字"
,
"
报表存放目录
"
,
true
,
"
报表文件
"
,
null
}
;
MCreateRPT.Invoke(objRptService, ParamersRPT);
}
private
void
SetProperty(
object
obj,
object
objValue,
string
sPropertyName, Type t)
{
PropertyInfo p
=
t.GetProperty(sPropertyName);
p.SetValue(obj, objValue,
null
);
}
查看全文
相关阅读:
使用RSA实现客户端和后台的非对称加密
PHP异步并行网络扩展swoole安装
rvm is not a function的解决方法
python中的sort(),sorted()的用法
RESTful框架中的Mixin中的五个类视图
RESTful框架的API请求流程
理解RESTful架构
Django中的admin管理工具
一个程序员的自我介绍--英文版
Django中的认证系统
原文地址:https://www.cnblogs.com/oldhorse/p/1047094.html
最新文章
移动端输入框的光标隐藏--解决手机上传照片旋转问题
移动端滑动、滚动、点击三种事件
上传代码出现的问题
异步加载组件
vue项目中全局配置变量
vue中的$route和$router的区别
将数组按照个数进行分组
一款好用的程序员切图标注神器
【经验】超全面:这份设计师晋升答辩指南 值得收藏!
摹客演示Axure原型,适配更丰富机型
热门文章
UI&UX17个小技巧合集
摹客新功能:无需登录快速访问全貌画板
带交互的 iOS 产品原型可以用什么软件制作?
一看就会,效率翻倍!在线设计必会技能(基础篇)
【干货】“在线”正当道,8款在线原型工具推荐
B端按钮设计指南
B端按钮设计指南
【干货】20款精美APP和Web设计模板素材(附演示链接)
我在设置MySQL远程连接时走的弯路
JavaScript中的constructor、instanceof、isPrototypeOf、typeof以及hasOwnProperty
Copyright © 2011-2022 走看看