C#调用Web Service时的身份验证
在System.Net中提供了一个NetworkCredential,经过它咱们能够在网络中提供一个凭证,只有得到该凭证的用户才能访问相应的服务的权限。在这里咱们也使用NetworkCredential。在NetworkCredential中,咱们经过提供WebService发布所在的服务器名称,以及登陆服务器并调用该WebService的用户名及密码(在IIS中配置)。
在调用WebService时设置其Credential属性,把上面获得的Credential凭证赋值给它,这样只有使用提供的用户名及密码才能调用WebService服务了而其余用户则没法访问,这样就能能知足防止WebService被别人调用了。
至于主机名,用户名及密码,对于B/S能够经过webconfig来配置,对于C/S可使用应用程序配置文件。这样就能灵活地配置了。
以下以C/S为例来讲明,首先咱们提供一个服务器网络凭证,而后经过WebRequest来验证链接是否成功。固然了,为了保存用户名与密码等的安全,能够对其进行加密等手段来保证其安全。
如下是主要源代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

(1)必须引用 System.Net;
(2)对WebService发访问,在IIS里取消匿名访问权限,若容许匿名访问,就没有必须提供验证凭证了。IIS里怎么取消匿名访问 权限请参照IIS相关文章,这里不在累赘。
验证是有时速度会比较慢,主要是由于myWebResponse = myWebRequest.GetResponse();