当前位置: 操作系统/服务器>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”。
怎么样,网上家园的实现并不复杂吧,经过如此一番设置,你的豪宅也装修得差不多了,赶快进去落户吧。(出处:中国电脑教育报)
最新技术文章: