当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪Web服务中的异常处理(4)       客户端的异常处理 这个部分,我们将看看在客户端怎样处理从Web服务中所抛出的异常。为了说明这个做法,我们来创建一个新项目CategoriesServiceClient。一旦项目被创建,.........
    ▪Web服务中的异常处理(2)       Web服务的实现 为了达到这个示例的目的,我们创建一个名为CategoriesService的Web服务,选择一个可视化的C#ASP.NETWeb服务作为项目的模版。一旦创建项目,我们就添加一个名.........
    ▪轻松建立Web服务器       “我想有个家,一个不需要华丽的地方……”,对于想建网上家园的你来说是否对这首歌更有一番感触?装了宽带之后,我们完全可以把自己的电脑作成Web服务器,感受.........

[1]Web服务中的异常处理(4)
    来源: 互联网  发布时间: 2013-12-24

客户端的异常处理 这个部分,我们将看看在客户端怎样处理从Web服务中所抛出的异常。为了说明这个做法,我们来创建一个新项目CategoriesServiceClient。一旦项目被创建,就在默认的表单上添加一个命令按钮,并命名为btnInvoke。因为需要在客户端引用Web服务,所以在项目CategoriesService中添加一个WebReference。可以通过Project->AddReference菜单选项来完成添加。然后修改命令按钮的Click事件,如下所示。

privatevoidbtnInvoke_Click(objectsender,System.EventArgse)

{

try

{

Categoriescat=newCategories();

MessageBox.Show(cat.AddCategories(" XmlNamespaceManagernsManager=new

XmlNamespaceManager(doc.NameTable);

//AddthenamespacetotheNamespaceManager

nsManager.AddNamespace("errorNS",

"http://tempuri.org/CategoriesService");

XmlNodecategoryNode=

doc.DocumentElement.SelectSingleNode("errorNS:Error",

nsManager);

stringerrorNumber=

categoryNode.SelectSingleNode("errorNS:ErrorNumber",

nsManager).InnerText;

stringerrorMessage=
categoryNode.SelectSingleNode("errorNS:ErrorMessage",

nsManager).InnerText;

stringerrorSource=

categoryNode.SelectSingleNode("errorNS:ErrorSource",

nsManager).InnerText;

MessageBox.Show("ErrorNumberis"+errorNumber);

MessageBox.Show("ErrorMessageis"+errorMessage);

MessageBox.Show("ErrorSourceis"+errorSource);

} catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

客户端需要处理Web服务所产生的异常。因为Web服务所产生的异常都是SoapException形式的,所以调用Web服务的客户应用程序的代码应该被包含在try...catch块中,并且第一个catch块应该具有捕捉SoapException的处理器。让我们大致看看以上所示的代码。

首先创建一个Categories类的实例。然后传入所要求的XML字符串参数,调用Categories类的AddCategories方法。再后,我们让catch块处理Web服务所产生的异常。在这个代码块中,我们以消息提示框的方式显示异常的产生者。我们通过使用SoapException对象的Code属性来完成这个显示。如果异常是因为客户端的非法输入而产生的,那么Code属性被设置为Client。如果异常是因为Web服务代码(例如,据库服务器已经关闭)而产生的,则Code属性被设为Server。

然后,我们把包含在SoapException对象的Detail元素中的XML数据导入到一个XmlDocument对象中。类似于Web服务的代码,这里同样利用XmlNamespaceManager对象把命名空间与XmlDocument对象关联在一起。之后,取出包含在不同元素中的值,并把它们赋给本地变量。最后,使用消息提示框显示本地变量的值。 把它放在一起

至此,我们已经完成了客户应用程序,现在让我们运行测试它。如果运行客户程序,它将显示一个消息框(具有true值),那么则表明categories详细信息已经成功保存到数据库中。现在,从输入的XML数据中删除元素,运行客户程序。将会得到一个消息,表明异常的原因是客户程序,除此之外,还可以在SoapException对象中得到更多的异常信息。

正如前面所提到的那样,如果Web服务失败是由于服务器端的一些问题引起的,那么SoapException对象的Code属性应该被设置为Server。为了测试这个,修改Web服务中的连接字符串为一个无效值。现在,如果运行客户程序,将会得到一个表明异常的原因是Server的消息(该例中的Web服务)。

结论

本文中,我们已经了解到怎样使用SoapException对象来处理和传递异常给Web服务的客户端。我们还了解到SoapException对象是怎样利用SOAPfault编码(定义在SOAP规范中)来传递异常的。顺便,我们还讨论了处理客户端所产生的异常的步骤。虽然我们创建的应用的功能非常的简单,但是它给我们理解怎样抛出和处理Web服务中的异常提供了一个坚实的基础.
(出处:PConline)

    
[2]Web服务中的异常处理(2)
    来源: 互联网  发布时间: 2013-12-24

Web服务的实现 为了达到这个示例的目的,我们创建一个名为CategoriesService的Web服务,选择一个可视化的C#ASP.NETWeb服务作为项目的模版。一旦创建项目,我们就添加一个名为AddCategories的方法,并且给这个方法添加下列代码:

[WebMethod]

publicboolAddCategories(stringxml)

{

try

{

using(SqlConnectionconn=newSqlConnection())

{

if(ValidateXml(xml))

{

XmlDocumentdoc=newXmlDocument();

doc.LoadXml(xml);

conn.ConnectionString=

"server=localhost;uid=sa;pwd=thiru;database=northwind";

conn.Open();

XmlNamespaceManagernsManager=new

XmlNamespaceManager(doc.NameTable);

//AddthenamespacetotheNamespaceManager

nsManager.AddNamespace("catNS",

"http://tempuri.org/CategoriesNamespace");

XmlNodecategoryNode=

doc.DocumentElement.SelectSingleNode("catNS:Category",

nsManager);

stringcategoryName=

categoryNode.SelectSingleNode("catNS:CategoryName",

nsManager).InnerText;

stringcategoryDescription=

categoryNode.SelectSingleNode("catNS:CategoryDescription",

nsManager).InnerText;

SqlCommandcommand=new

SqlCommand("usp_InsertCategories",conn);

command.CommandType=CommandType.StoredProcedure; //AddtheCategoryNameparameter

SqlParameterparamCategoryName=new

SqlParameter("@CategoryName",SqlDbType.NVarChar,15);

paramCategoryName.Direction=ParameterDirection.Input;

paramCategoryName.Value=categoryName;

command.Parameters.Add(paramCategoryName);

//AddtheDescriptionparameter

SqlParameterparamDescription=new

SqlParameter("@Description",SqlDbType.Text);

paramDescription.Direction=ParameterDirection.Input;

paramDescription.Value=categoryDescription;

command.Parameters.Add(paramDescription); command.ExecuteNonQuery();

}

else

throw

RaiseException("AddCategories",

"http://tempuri.org/CategoriesService",

builder.ToString(),

"2000","AddCategories",FaultCode.Client);

}

returntrue;

}

catch(SoapExceptionsoapEx)

{

throwsoapEx;

}

catch(Exceptionex)

{

EventLog.WriteEntry("Test",ex.Message);

throw

RaiseException("AddCategories",

"http://tempuri.org/CategoriesService",ex.Message,

"1000",ex.Source,FaultCode.Server);

}

} 正如其名所提示的那样,AddCategories方法负责把category的详细信息添加到Northwind数据库的categories表中。在执行添加操作之前,AddCategories方法使用一个外部的XML模式文件校验被添加的XML数据,如果校验失败,它给Web服务的客户端抛出一个异常。

让我们来大致浏览上面的代码吧。首先,把XML数据传递给它,调用ValidateXml方法。过一会我们再来看ValidateXml方法的代码。ValidateXml方法返回true或false,这完全取决于XML校验是否成功。如果返回true,那么就创建一个XmlDocument对象实例,并给它导入XML数据,另外还设置ConnectionString属性来初始化SqlConnection对象,然后调用SqlConnection对象的Open方法。其次,创建一个XmlNamespaceManager实例,调用AddNamespace方法关联一个命名空间。一旦关联命名空间,我们就可以使用命名空间标识符引用正确的XML元素。再次,创建一个SqlParameter对象实例,给存储过程添加参数。最后,调用SqlCommand对象的ExecuteNonQuery方法执行存储过程。

如果ValidateXml方法返回false,则用名为RaiseException的助手方法抛出SoapException。我们现在就来讨论RaiseException。RaiseException方法一个基本的助手方法,它封装用来从Web服务中抛出异常的代码。RaiseException方法的最后一个参数是一个枚举常量,它的定义如下。

publicenumFaultCode

{

Client=0,

Server=1

}

XML校验失败表示客户端提供了无效的XML数据。这种情况,我们应该把枚举常量设为Client,给客户应用程序指出这种错误。这就使得我们通知客户端应用程序在再一次调用Web服务之前需要检查输入数据的格式成为可能。如果Web服务由于一些其他原因(例如,数据库服务器的不可用)而失败,那么就需要设置枚举常量为Server。这就说明Web服务失败是由于服务器端的一些问题造成的,客户应用程序可以在几秒钟后重新请求。事实上,在catch块中捕捉一般Exception,这正是我们要做的。 (出处:PConline)

    
[3]轻松建立Web服务器
    来源: 互联网  发布时间: 2013-12-24

“我想有个家,一个不需要华丽的地方……”,对于想建网上家园的你来说是否对这首歌更有一番感触?装了宽带之后,我们完全可以把自己的电脑作成Web服务器,感受一下拥有几十GB空间,CGI、PHP、ASP等都支持的网上豪宅。心急喝不了热粥,呵呵,首先还是来简单了解一下有关Web服务的基础知识。 基础篇

Web服务器:在网络中为实现信息发布、资料查询、数据处理等诸多应用搭建基本平台的服务器。

Web服务器如何工作:在Web页面处理中大致可分为三个步骤,第一步,Web浏览器向一个特定的服务器发出Web页面请求;第二步,Web服务器接收到Web页面请求后,寻找所请求的Web页面,并将所请求的Web页面传送给Web浏览器;第三步,Web服务器接收到所请求的Web页面,并将它显示出来,原理如图1。




HTTP:全名为Hypertext Transfer Protocol,即超文本传输协议,用于传输网页等内容。

HTML:Hypertext Markup Language,即超文本标记语言,是用于创建Web文档的标准语言。 实现篇 在Windows 2000中只要添加IIS(Internet Information Server,操作系统自带的组件),便可轻松实现Web服务。

在Windows 2000 Server中,如果没有添加IIS,可单击“开始”,指向“设置”,单击“控制面板”,双击“添加/删除程序”,选择“添加删除Windows组件”,在弹出的“Windows组件向导”窗中“组件”下勾选“Internet信息服务(IIS)”。然后放入系统源盘,单击“下一步”,显示“完成'Windows 组件向导'”窗后单击“完成”即可。

调试小技巧:Web服务器有没有设置好,可用自己的电脑先进行测试。右键单击桌面上的“网上邻居”图标,选择“属性”,在“本地连接”图标上单击右键,选择“属性”,在连接组件中选择“Internet协议TCP/IP”。单击“属性”钮进入到属性窗中,勾选“使用下面的IP地址”,如IP地址设为“192.168.0.1”,子网掩码设为“255.255.255.0”,确定后便可在浏览器中输入“http://192.168.0.1”,回车后如能看到网页,说明Web服务器已架设成功。

进阶篇

此时的Web服务如拿来使用,功能不但不多,而且还很不安全,所以得先好好设置一下。单击“开始→程序→管理工具→Internet服务管理器”,在“Internet信息服务”左窗格中展开服务器名称前的“+”号,然后在“默认Web站点”选项上单击鼠标右键,从弹出菜单中选择“属性”。下面来谈一些具体设置:

1、IP地址设置

为了使别人能很方便地访问你的网页,首先得设定IP地址,在“默认Web站点属性”中单击“Web站点”标签,就可以输入IP地址了(如图2)。目前安装宽带网的朋友很多,但是拥有固定的IP地址还是很少的,所以在这我们也可以使用其默认的“全部未分配”。但这对于希望能有更多用户来浏览自己网站的朋友来说,还有一种更好的办法把我们动态IP地址转换为固定的域名进行访问。方法有许多,像利用DNS2Go、DynamicHost等都可以实现。


TCP端口:在采用默认值“80”时,用户只需通过浏览器输入你的域名,如www.2to1.d2g.com,便能对该站点进行访问,如果把该TCP端口修改成其他的端口号,如“1200”,那么在访问该站点时,必须在浏览器地址中输入“域名+端口号”,如“www.2to1.d2g.com:1200”。 SSL端口:在信息传送过程中,如果我们担心别人截获,可采用SSL加密,如我们要指定加密使用的端口,可单击“IP地址”后的“高级”钮,然后在“SSL端口”中修改端口号,该端口默认值为“443”,修改后,用户在浏览我们的网页时同样需要知道该端口号,否则无法连接到该服务器,访问方法也是“域名+端口号”。

2、修改主目录及访问权限

网页究竟放在硬盘的哪个地方,可根据自己的需要进行设置。需要注意是在“本地路径”下有一些对访问的控制设置,简要介绍如下:

脚本资源访问:如果用户访问已经设置了“读取”或“写入”权限的资源代码(资源代码包括ASP应用程序中的脚本),要选中该选项。

读取:如想使别人能对你的网页进行访问应当勾选它,它允许用户读取或下载文件(目录)及其相关属性。

写入:如果允许用户上传或更改可写文件的内容,应当勾选此项。

目录浏览:如果允许用户查看该虚拟目录中文件及子目录的超文本列表,则应勾选此项,但为了安全起见,请不要选择目录浏览。

3、设置默认文档

为什么输入地址便能打开“default.htm”或“index.htm”等网页呢?其实这就是各服务器中设置的默认文档。单击“文档”标签,在这我们可设定自己的默认页面,如添加一个“index.htm”。

怎么样,网上家园的实现并不复杂吧,经过如此一番设置,你的豪宅也装修得差不多了,赶快进去落户吧。(出处:中国电脑教育报)

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3