web开发案例ch07
- 格式:ppt
- 大小:3.68 MB
- 文档页数:95
第七章 调试[Debugging]7-1第七章 调试[Debugging]7.1 调试的工具条··································································7-2 7.2 调试菜单··········································································7-2 7.3 I/O 设置 ···········································································7-4 7.4 取样跟踪··········································································7-5 7.5 触发··················································································7-7♦ 调试功能是检测在程序中的错误同时为正常运行消除错误。
要以安全的方式访问Web服务方法,可以考虑以下安全措施:是谁调用?--SoapHeader身份认证。
来自哪里?--访问IP认证。
加密传输--SSL安全访问。
这些安全保护措施常常是配合使用的。
7.9.1 通过SoapHeader来增强Web Service的安全性(完通过SoapHeader我们可以让具有指定用户口令的用户来访问我们的Web服务接口。
整代码示例位置:光盘\code\ch07\WebAppClient\WebForm-SoapHeader.aspx)1.Web Service实现步骤(1)定义自己的SoapHeader派生类。
1.//<summary>2.//定义自己的SoapHeader派生类3.//</summary>4.public class MySoapHeader : System.Web.Services.Protocols.SoapHeader5.{6.private string _UserID = string.Empty;7.private string _PassWord = string.Empty;8.//<summary>9.//构造函数10.//</summary>11.public MySoapHeader()12. {13. }14.//<summary>15.//构造函数16.//</summary>17.//<param name="nUserID">用户ID</param>18.//<param name="nPassWord">加密后的密码</param>19.public MySoapHeader(string nUserID, string nPassWord)20. {21. Initial(nUserID, nPassWord);22. }23. #region 属性24.//<summary>25.//用户名26.//</summary>27.public string UserID28. {29.get { return _UserID; }30.set { _UserID = value; }31. }32.//<summary>33.//加密后的密码34.//</summary>35.public string PassWord36. {37.get { return _PassWord; }38.set { _PassWord = value; }39. }40. #endregion41. #region 方法42.//<summary>43.//初始化44.//</summary>45.//<param name="nUserID">用户ID</param>46.//<param name="nPassWord">加密后的密码</param>47.private void Initial(string nUserID, string nPassWord)48. {49. UserID = nUserID;50. PassWord = nPassWord;51. }52.//<summary>53.//验证用户名密码是否正确54.//</summary>55.//<param name="nUserID">用户ID</param>56.//<param name="nPassWord">加密后的密码</param>57.//<param name="nMsg">返回的错误信息</param>58.//<returns>用户名密码是否正确</returns>59.private bool IsValid(string nUserID, string nPassWord, out stringnMsg)60. {61. nMsg = "";62.try63. {64.//判断用户名密码是否正确65.if (nUserID == "admin" && nPassWord == "admin")66. {67.return true;68. }69.else70. {71. nMsg = "对不起,你无权调用此Web服务。
例7.1 数组元素的引用。
main(){int a[9];for(i=0;i<9;i++)a[i]=i;for(i=8;i>=0;i--)printf("%d",a[i]);}运行结果:8 7 6 5 4 3 2 1 0例7.2 对一维数组的动态赋值。
main(){int i,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]);}运行结果:852例7.3 分析下面的程序。
main(){int n[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[k]);}例7.4 从键盘顺序输入30个整数,然后按逆序将它们输出。
#include <stdio.h>main(){int a[30],i,temp; /*a为整型数组,含30个元素*/for(i=0;i<30;i++) /*i从0到29循环,对数组的30个元素输入数据*/ scanf("%d",&a[i]);printf("\n");for(i=0;i<30/2;i++) /*通过循环对a数组的元素头尾颠倒*/{temp=a[i];a[i]=a[30-i-1];}for(i=0;i<30;i++) /*输出换序以后数组的内容*/printf("%d",a[i]);}例7.5 用排序法对一维数组中的整数进行排序,使其数组元素的值按从小到大的顺序排列。
main(){int n,i,k,x,min,p,a[100];printf("please intput your number:\n");/*输入排序数的个数,n不能大于100*/scanf("%d",&n); /*输入n个要排序的数*/printf("please input your numbers:\n");for(i=0;i<n;i++)scanf("%d",&a[i]);for(k=0;k<n-1;k++) /*控制排序总共进行n-1步*/{min=a[k]; /*设定第k个数是当前最小值*/p=k; /*用min-k记录最小数的下标*/}for(i=k,i<n,i++) /*在第k到第n数中找最小数*/if(a[i]<min) /*如果当前数小于最小数*/{min=a[i]; /*记录新的最小数和下标*/min-k=i;x=a[p]; /*交换最小数和k个数的位置*/a[p]=a[k];a[k]=x;}for(i=0;i<n;i++)printf("%d",a[i]);printf("\n");}运行结果:please input your number:6please input your numbers:5 34 56 2 78 402 5 34 40 56 78例7.6 从键盘上输入一个3行4列的矩阵,将其转换后以4行3列的形式输出。