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
);
}
查看全文
相关阅读:
JavaScript 变量类型 保存内存中的位置 和 引用
https连接过程
微信消息自动回复 json版
RabbitMQ安装
nginx反向代理
小程序接口记录
nginx同服务器不同目录的差别配置
nginx URL隐藏index.php
Laravel 打印SQL语句
laravel PostTooLargeException
原文地址:https://www.cnblogs.com/oldhorse/p/1047094.html
最新文章
Linux_C socket 服务器与客户端交互程序(输入小写转换为大写)
SQL注入绕过waf的一万种姿势
二次注入原理及防御
PHP一句话木马
关于PHP的表单提交显示
关于PHP中$和$$的区别
关于PHP的表单数组提交显示
关于PHP的isset()函数
关于PHP的__construct()函数
Linux下基础命令
热门文章
Windows下用户手册
网站开发 关于图片压缩 以及图片使用
Node.js 之 express 入门 ejs include公共部分
jQuery插件开发
应该知道的4中设计模式
jquery获取当前元素坐标
一张图搞懂 Javascript 中的原型链、prototype、__proto__的关系 转载加自己的总结
策略者模式
JavaScript 之 call apply bind
instanceof 和 构造函数
Copyright © 2011-2022 走看看