<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Gavin's BLOG</title><subtitle type="text">Right people get the right information at the right time.以技术求生存，以市场求发展；学以至用，开拓创新；达技术之颠峰，至市场之广阔！我的订阅.COM</subtitle><id>http://feed.cnblogs.com/blog/u/13010/rss</id><updated>2011-12-03T08:59:08Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13010/rss"/><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/12/03/2274784.html</id><title type="text">英文　视频　老友记　第一季　第二季　第三季　第四季　第五季　第六季　第七季　第八季　第九季　第十季</title><summary type="text">英文　视频　老友记　第一季　第二季　第三季　第四季　第五季　第六季　第七季　第八季　第九季　第十季</summary><published>2011-12-03T08:26:00Z</published><updated>2011-12-03T08:26:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/12/03/2274784.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/12/03/2274784.html"/><content type="html">&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;下载后，将.rar改为.rmvb &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;第一季（Season 1）：&lt;br /&gt;第一季第1集：http://u.115.com/file/t6842753d0&lt;br /&gt;第一季第2集：http://u.115.com/file/aq29mrk1 （该链接下载后，直接解压即可）&lt;br /&gt;第一季第3集：http://u.115.com/file/t63f73da6a&lt;br /&gt;第一季第4集：http://u.115.com/file/aq29mlut （该链接下载后，直接解压即可）&lt;br /&gt;第一季第5集：http://u.115.com/file/t6486f0be6&lt;br /&gt;第一季第6集：http://u.115.com/file/t64f9a4846&lt;br /&gt;第一季第7集：http://u.115.com/file/t6d693794e&lt;br /&gt;第一季第8集：http://u.115.com/file/t613b46bf7&lt;br /&gt;第一季第9集：http://u.115.com/file/t62c8fd139&lt;br /&gt;第一季第10集：http://u.115.com/file/t6ba80a54b&lt;br /&gt;第一季第11集：http://u.115.com/file/t64c585803&lt;br /&gt;第一季第12集：http://u.115.com/file/t641051a8c&lt;br /&gt;第一季第13集：http://u.115.com/file/t61d109909&lt;br /&gt;第一季第14集：http://u.115.com/file/t64c25b1c3&lt;br /&gt;第一季第15集：http://u.115.com/file/t63c71b9d6&lt;br /&gt;第一季第16&amp;#8212;17集：http://u.115.com/file/t6cb590b1e&lt;br /&gt;第一季第18集：http://u.115.com/file/t65a4ae138&lt;br /&gt;第一季第19集：http://u.115.com/file/t67b9d8f68&lt;br /&gt;第一季第20集：http://u.115.com/file/t6b6a2bf1f&lt;br /&gt;第一季第21集：http://u.115.com/file/t6f8e21f1c&lt;br /&gt;第一季第22集：http://u.115.com/file/t64cea076e&lt;br /&gt;第一季第23集：http://u.115.com/file/t6ad980e34&lt;br /&gt;第一季第24集：http://u.115.com/file/t6be46ea02&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第二季（Season 2）：&lt;br /&gt;第二季第1集：http://u.115.com/file/t6f0e7a6a7&lt;br /&gt;第二季第2集：http://u.115.com/file/t6a52e1b56&lt;br /&gt;第二季第3集：http://u.115.com/file/t66d6a73a6&lt;br /&gt;第二季第4集：http://u.115.com/file/t650be982b&lt;br /&gt;第二季第5集：http://u.115.com/file/t65cfc0372&lt;br /&gt;第二季第6集：http://u.115.com/file/t66b8d5630&lt;br /&gt;第二季第7集：http://u.115.com/file/t6b9ec01ac&lt;br /&gt;第二季第8集：http://u.115.com/file/t6a455be3d&lt;br /&gt;第二季第9集：http://u.115.com/file/t662fd5c82&lt;br /&gt;第二季第10集：http://u.115.com/file/t6212f6e08&lt;br /&gt;第二季第11集：http://u.115.com/file/t614018c7f&lt;br /&gt;第二季第12集：http://u.115.com/file/t6ac7cb296&lt;br /&gt;第二季第13集：http://u.115.com/file/t68da24bc6&lt;br /&gt;第二季第14集：http://u.115.com/file/t688e60e25&lt;br /&gt;第二季第15集：http://u.115.com/file/t6a0c894dc&lt;br /&gt;第二季第16集：http://u.115.com/file/t68371299b&lt;br /&gt;第二季第17集：http://u.115.com/file/t61eef854f&lt;br /&gt;第二季第18集：http://u.115.com/file/t651efbf59&lt;br /&gt;第二季第19集：http://u.115.com/file/t64417d333&lt;br /&gt;第二季第20集：http://u.115.com/file/t65ce6b093&lt;br /&gt;第二季第21集：http://u.115.com/file/t689a29fd2&lt;br /&gt;第二季第22集：http://u.115.com/file/t68b98114&lt;br /&gt;第二季第23集：http://u.115.com/file/t63d3fccf4&lt;br /&gt;第二季第24集：http://u.115.com/file/t67f48868&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第三季（Season 3）：&lt;br /&gt;第三季第1集：http://u.115.com/file/t6b9ab20ff&lt;br /&gt;第三季第2集：http://u.115.com/file/t622600d84&lt;br /&gt;第三季第3集：http://u.115.com/file/t64aef6163&lt;br /&gt;第三季第4集：http://u.115.com/file/t6393787b7&lt;br /&gt;第三季第5集：http://u.115.com/file/t62443d4bf&lt;br /&gt;第三季第6集：http://u.115.com/file/t6d7738d5b&lt;br /&gt;第三季第7集：http://u.115.com/file/t61a7e4535&lt;br /&gt;第三季第8集：http://u.115.com/file/t6fe9ba278&lt;br /&gt;第三季第9集：http://u.115.com/file/t63d34f0fd&lt;br /&gt;第三季第10集：http://u.115.com/file/t6c8186e85&lt;br /&gt;第三季第11集：http://u.115.com/file/t65d52b5c7&lt;br /&gt;第三季第12集：http://u.115.com/file/t6c616095b&lt;br /&gt;第三季第13集：http://u.115.com/file/t64f9003c1&lt;br /&gt;第三季第14集：http://u.115.com/file/t67b74450b&lt;br /&gt;第三季第15集：http://u.115.com/file/t69c01b6a&lt;br /&gt;第三季第16集：http://u.115.com/file/t67a0b0bf7&lt;br /&gt;第三季第17集：http://u.115.com/file/t6592ea2f8&lt;br /&gt;第三季第18集：http://u.115.com/file/t6a90bff29&lt;br /&gt;第三季第19集：http://u.115.com/file/t69f127182&lt;br /&gt;第三季第20集：http://u.115.com/file/t68cd88e6d&lt;br /&gt;第三季第21集：http://u.115.com/file/t634018d3a&lt;br /&gt;第三季第22集：http://u.115.com/file/t691883c3e&lt;br /&gt;第三季第23集：http://u.115.com/file/t6cc4aaae0&lt;br /&gt;第三季第24集：http://u.115.com/file/t67f0265c4&lt;br /&gt;第三季第25集：http://u.115.com/file/t69df5478c&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第四季（Season 4）：&lt;br /&gt;第四季第1集：http://u.115.com/file/t6f5b79739&lt;br /&gt;第四季第2集：http://u.115.com/file/t6331092e6&lt;br /&gt;第四季第3集：http://u.115.com/file/t695f022c8&lt;br /&gt;第四季第4集：http://u.115.com/file/t6935c765f&lt;br /&gt;第四季第5集：http://u.115.com/file/t6b3b56a8c&lt;br /&gt;第四季第6集：http://u.115.com/file/t63fdaa0e5&lt;br /&gt;第四季第7集：http://u.115.com/file/t674f65af7&lt;br /&gt;第四季第8集：http://u.115.com/file/t6335a2b98&lt;br /&gt;第四季第9集：http://u.115.com/file/t65be6c6bb&lt;br /&gt;第四季第10集：http://u.115.com/file/t691f17753&lt;br /&gt;第四季第11集：http://u.115.com/file/t6980fd1b8&lt;br /&gt;第四季第12集：http://u.115.com/file/t6c899e7ff&lt;br /&gt;第四季第13集：http://u.115.com/file/t62bd96038&lt;br /&gt;第四季第14集：http://u.115.com/file/t65f55fca0&lt;br /&gt;第四季第15集：http://u.115.com/file/t68321b36e&lt;br /&gt;第四季第16集：http://u.115.com/file/t6a21ccc46&lt;br /&gt;第四季第17集：http://u.115.com/file/t6159b883b&lt;br /&gt;第四季第18集：http://u.115.com/file/t623230464&lt;br /&gt;第四季第19集：http://u.115.com/file/t6d176c488&lt;br /&gt;第四季第20集：http://u.115.com/file/t676fad9df&lt;br /&gt;第四季第21集：http://u.115.com/file/t6becba346&lt;br /&gt;第四季第22集：http://u.115.com/file/t697a1f489&lt;br /&gt;第四季第23&amp;#8212;24集：http://u.115.com/file/t631d781b1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第五季（Season 5）：&lt;br /&gt;第五季第1集：http://u.115.com/file/t63b88f28e&lt;br /&gt;第五季第2集：http://u.115.com/file/t6a717ccd8&lt;br /&gt;第五季第3集：http://u.115.com/file/t613a4879e&lt;br /&gt;第五季第4集：http://u.115.com/file/t6e0ddc376&lt;br /&gt;第五季第5集：http://u.115.com/file/t6cc505e01&lt;br /&gt;第五季第6集：http://u.115.com/file/t63ff48290&lt;br /&gt;第五季第7集：http://u.115.com/file/t6248d2c30&lt;br /&gt;第五季第8集：http://u.115.com/file/t6e8ec3d90&lt;br /&gt;第五季第9集：http://u.115.com/file/t63ae2d753&lt;br /&gt;第五季第10集：http://u.115.com/file/t6b5bc146b&lt;br /&gt;第五季第11集：http://u.115.com/file/t6ba0e5afd&lt;br /&gt;第五季第12集：http://u.115.com/file/t6136bf580&lt;br /&gt;第五季第13集：http://u.115.com/file/t6d6987073&lt;br /&gt;第五季第14集：http://u.115.com/file/t6b094a7c2&lt;br /&gt;第五季第15集：http://u.115.com/file/t646cce10a&lt;br /&gt;第五季第16集：http://u.115.com/file/t6faf993b9&lt;br /&gt;第五季第17集：http://u.115.com/file/t6d62b39f5&lt;br /&gt;第五季第18集：http://u.115.com/file/t6a7c09c51&lt;br /&gt;第五季第19集：http://u.115.com/file/t6b314f98a&lt;br /&gt;第五季第20集：http://u.115.com/file/t677c776a7&lt;br /&gt;第五季第21集：http://u.115.com/file/t6b2e6421&lt;br /&gt;第五季第22集：http://u.115.com/file/t6bf7c2272&lt;br /&gt;第五季第23&amp;#8212;24集：http://u.115.com/file/t670bf1580&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第六季（Season 6）：&lt;br /&gt;第六季第1集：http://u.115.com/file/t62311dcc5&lt;br /&gt;第六季第2集：http://u.115.com/file/t6e591699b&lt;br /&gt;第六季第3集：http://u.115.com/file/t6a9963cba&lt;br /&gt;第六季第4集：http://u.115.com/file/t621182051&lt;br /&gt;第六季第5集：http://u.115.com/file/t648a8f0ec&lt;br /&gt;第六季第6集：http://u.115.com/file/t628b5e985&lt;br /&gt;第六季第7集：http://u.115.com/file/t654ac1f42&lt;br /&gt;第六季第8集：http://u.115.com/file/t6219c5854&lt;br /&gt;第六季第9集：http://u.115.com/file/t6c527f211&lt;br /&gt;第六季第10集：http://u.115.com/file/t6197ae2d9&lt;br /&gt;第六季第11集：http://u.115.com/file/t6a6d5b1da&lt;br /&gt;第六季第12集：http://u.115.com/file/t660154577&lt;br /&gt;第六季第13集：http://u.115.com/file/t6ad5d1c90&lt;br /&gt;第六季第14集：http://u.115.com/file/t679333dfc&lt;br /&gt;第六季第15&amp;#8212;16集：http://u.115.com/file/t6c224629&lt;br /&gt;第六季第17集：http://u.115.com/file/t6582874ff&lt;br /&gt;第六季第18集：http://u.115.com/file/t6f8c46a3d&lt;br /&gt;第六季第19集：http://u.115.com/file/t698c08b6b&lt;br /&gt;第六季第20集：http://u.115.com/file/t6f55d86af&lt;br /&gt;第六季第21集：http://u.115.com/file/t6e52aedc5&lt;br /&gt;第六季第22集：http://u.115.com/file/t6aa8ab5aa&lt;br /&gt;第六季第23集：http://u.115.com/file/t6ce821d13&lt;br /&gt;第六季第24&amp;#8212;25集：http://u.115.com/file/t65dc8719e&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第七季（Season 7）：&lt;br /&gt;第七季第1集：http://u.115.com/file/t6eb1c3ddb&lt;br /&gt;第七季第2集：http://u.115.com/file/t634831f14&lt;br /&gt;第七季第3集：http://u.115.com/file/t62c79883b&lt;br /&gt;第七季第4集：http://u.115.com/file/t69510bd7e&lt;br /&gt;第七季第5集：http://u.115.com/file/t6573fe01c&lt;br /&gt;第七季第6集：http://u.115.com/file/t68c4aa865&lt;br /&gt;第七季第7集：http://u.115.com/file/t62e72f8da&lt;br /&gt;第七季第8集：http://u.115.com/file/t6c831395a&lt;br /&gt;第七季第9集：http://u.115.com/file/t666ee9cb&lt;br /&gt;第七季第10集：http://u.115.com/file/t6e8a4dcd2&lt;br /&gt;第七季第11集：http://u.115.com/file/t6a39bfd21&lt;br /&gt;第七季第12集：http://u.115.com/file/t6f69346f2&lt;br /&gt;第七季第13集：http://u.115.com/file/t6cbbf1c34&lt;br /&gt;第七季第14集：http://u.115.com/file/t68e66d0f7&lt;br /&gt;第七季第15集：http://u.115.com/file/t6c6d2bd3b&lt;br /&gt;第七季第16集：http://u.115.com/file/t6e26878c6&lt;br /&gt;第七季第17集：http://u.115.com/file/t67c203036&lt;br /&gt;第七季第18集：http://u.115.com/file/t6b71d1a73&lt;br /&gt;第七季第19集：http://u.115.com/file/t6e40a776b&lt;br /&gt;第七季第20集：http://u.115.com/file/t649d5d4c2&lt;br /&gt;第七季第21集：http://u.115.com/file/t6cdc1247d&lt;br /&gt;第七季第22集：http://u.115.com/file/t647217274&lt;br /&gt;第七季第23集：http://u.115.com/file/t6b4558e17&lt;br /&gt;第七季第24集：http://u.115.com/file/t61f87db76&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第八季（Season 8）：&lt;br /&gt;第八季第1集：http://u.115.com/file/t65011aae2&lt;br /&gt;第八季第2集：http://u.115.com/file/t6a8c98fe6&lt;br /&gt;第八季第3集：http://u.115.com/file/t628b77080&lt;br /&gt;第八季第4集：http://u.115.com/file/t65fbc6058&lt;br /&gt;第八季第5集：http://u.115.com/file/t6b65b03a5&lt;br /&gt;第八季第6集：http://u.115.com/file/t6222dad24&lt;br /&gt;第八季第7集：http://u.115.com/file/t6dfcac12c&lt;br /&gt;第八季第8集：http://u.115.com/file/t62e2918e1&lt;br /&gt;第八季第9集：http://u.115.com/file/t61c5b4f58&lt;br /&gt;第八季第10集：http://u.115.com/file/t677465eeb&lt;br /&gt;第八季第11集：http://u.115.com/file/t67a42fff4&lt;br /&gt;第八季第12集：http://u.115.com/file/t627250a27&lt;br /&gt;第八季第13集：http://u.115.com/file/t6d317d15c&lt;br /&gt;第八季第14集：http://u.115.com/file/t68eba6b0b&lt;br /&gt;第八季第15集：http://u.115.com/file/t6df48711b&lt;br /&gt;第八季第16集：http://u.115.com/file/t692abca7e&lt;br /&gt;第八季第17集：http://u.115.com/file/t6e88c4a5b&lt;br /&gt;第八季第18集：http://u.115.com/file/t6bbd858d&lt;br /&gt;第八季第19集：http://u.115.com/file/t63df95eb9&lt;br /&gt;第八季第20集：http://u.115.com/file/t6be4a88cf&lt;br /&gt;第八季第21集：http://u.115.com/file/t6ea4e295f&lt;br /&gt;第八季第22集：http://u.115.com/file/t6705aa514&lt;br /&gt;第八季第23&amp;#8212;24集：http://u.115.com/file/t62023a527&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第九季（Season 9）：&lt;br /&gt;第九季第1集：http://u.115.com/file/t6e3d9f6ae&lt;br /&gt;第九季第2集：http://u.115.com/file/t6a92b987e&lt;br /&gt;第九季第3集：http://u.115.com/file/t695aafed7&lt;br /&gt;第九季第4集：http://u.115.com/file/t67ce68502&lt;br /&gt;第九季第5集：http://u.115.com/file/t6de37b26b&lt;br /&gt;第九季第6集：http://u.115.com/file/t6a535bbc7&lt;br /&gt;第九季第7集：http://u.115.com/file/t6171618a3&lt;br /&gt;第九季第8集：http://u.115.com/file/t6a70ce9a7&lt;br /&gt;第九季第9集：http://u.115.com/file/t6450788e4&lt;br /&gt;第九季第10集：http://u.115.com/file/t61fea08b9&lt;br /&gt;第九季第11集：http://u.115.com/file/t6c07e4c07&lt;br /&gt;第九季第12集：http://u.115.com/file/t61f2996fc&lt;br /&gt;第九季第13集：http://u.115.com/file/t644711d1e&lt;br /&gt;第九季第14集：http://u.115.com/file/t6b6b13b4a&lt;br /&gt;第九季第15集：http://u.115.com/file/t64495f104&lt;br /&gt;第九季第16集：http://u.115.com/file/t618521812&lt;br /&gt;第九季第17集：http://u.115.com/file/t66db1c1b6&lt;br /&gt;第九季第18集：http://u.115.com/file/t672807f94&lt;br /&gt;第九季第19集：http://u.115.com/file/t6b6602ef8&lt;br /&gt;第九季第20集：http://u.115.com/file/t6f106641e&lt;br /&gt;第九季第21集：http://u.115.com/file/t6c50bc979&lt;br /&gt;第九季第22集：http://u.115.com/file/t68a16678b&lt;br /&gt;第九季第23&amp;#8212;24集：http://u.115.com/file/t674c6920a&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第十季（Season 10）：&lt;br /&gt;第十季第1集：http://u.115.com/file/t6fc21d523&lt;br /&gt;第十季第2集：http://u.115.com/file/t68bdcaaf7&lt;br /&gt;第十季第3集：http://u.115.com/file/t6e9157c69&lt;br /&gt;第十季第4集：http://u.115.com/file/t6a13bef8a&lt;br /&gt;第十季第5集：http://u.115.com/file/t6a65cd311&lt;br /&gt;第十季第6集：http://u.115.com/file/t64a8e33b8&lt;br /&gt;第十季第7集：http://u.115.com/file/t63d47b570&lt;br /&gt;第十季第8集：http://u.115.com/file/t67a42cb7e&lt;br /&gt;第十季第9集：http://u.115.com/file/t68b5fb181&lt;br /&gt;第十季第10集：http://u.115.com/file/t699d0c072&lt;br /&gt;第十季第11集：http://u.115.com/file/t6902d4d04&lt;br /&gt;第十季第12集：http://u.115.com/file/t6f585657a&lt;br /&gt;第十季第13集：http://u.115.com/file/t652bfb975&lt;br /&gt;第十季第14集：http://u.115.com/file/t65db2a45e&lt;br /&gt;第十季第15集：http://u.115.com/file/t613af5038&lt;br /&gt;第十季第16集：http://u.115.com/file/t6ee70ac4a&lt;br /&gt;第十季第&amp;#8220;THE ONE BEFORE THE LAST ONE&amp;#8221;（结束之前）：TEN YEARS OF FRIENDS（老友记之十年）集：http://u.115.com/file/t650eb2299&amp;nbsp;&amp;nbsp;&amp;nbsp; （伊甸园压制；TLF-DivX字幕组 翻译:guardy）&lt;br /&gt;第十季第17&amp;#8212;18集：http://u.115.com/file/t6ad327476&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2274784.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/12/03/2274784.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/11/23/2260408.html</id><title type="text">几个好用的webservice</title><summary type="text">WebService : 气预报、ＩＰ地址来源、邮政编码、验证码图片、简繁转换、中英翻译、列车时刻、股票数据、即时汇率、飞机航班、基金数据</summary><published>2011-11-23T07:38:00Z</published><updated>2011-11-23T07:38:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/11/23/2260408.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/11/23/2260408.html"/><content type="html">&lt;div&gt;&lt;div&gt; 			 			&lt;/div&gt;&lt;p&gt;天气预报webservice&lt;br /&gt;&lt;/p&gt;&lt;a href="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"&gt;http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx&lt;/a&gt; &lt;p&gt;&lt;a href="http://www.weather.com.cn/static/html/weather_cj.shtml"&gt;http://www.weather.com.cn/static/html/weather_cj.shtml&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; ============================================&lt;br /&gt; &lt;br /&gt; 天气预报Web服务，数据来源于中国气象局 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; IP地址来源搜索 WEB 服务（是目前最完整的IP地址数据） &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; 随机英文、数字和中文简体字 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; 中国邮政编码 &amp;lt;-&amp;gt; 地址信息双向查询/搜索 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 验证码图片 WEB 服务 支持中文、字母、数字 图像和多媒体 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; Email 电子邮件地址验证 WEB 服务&lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 中文简体字&amp;lt;-&amp;gt;繁体字转换 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 中文 &amp;lt;-&amp;gt; 英文双向翻译 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 火车时刻表 WEB 服务 （第六次提速最新列车时刻表） &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 中国股票行情数据 WEB 服务（支持深圳和上海股市的基金、债券和股票） &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 即时外汇汇率数据 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 腾讯QQ在线状态 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 中国电视节目预告（电视节目表） WEB 服务&lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; 外汇-人民币即时报价 WEB 服务&lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 中国股票行情分时走势预览缩略图 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 国内飞机航班时刻表 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/webservices/DomesticAirline.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/webservices/DomesticAirline.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 中国开放式基金数据 WEB 服务 &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx?wsdl"&gt;WSDL&lt;/a&gt; &lt;br /&gt; &lt;br /&gt; 股票行情数据 WEB 服务（支持香港、深圳、上海基金、债券和股票；支持多股票同时查询） &lt;br /&gt; &lt;a title="Endpoint" target="_blank" href="http://www.webxml.com.cn/WebServices/StockInfoWS.asmx"&gt;Endpoint&lt;/a&gt; &lt;br /&gt; &lt;a title="Disco" target="_blank" href="http://www.webxml.com.cn/WebServices/StockInfoWS.asmx?disco"&gt;Disco&lt;/a&gt; &lt;br /&gt; &lt;a title="WSDL" target="_blank" href="http://www.webxml.com.cn/WebServices/StockInfoWS.asmx?wsdl"&gt;WSDL&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2260408.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/11/23/2260408.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/10/12/2208542.html</id><title type="text">SQL Server 2008 中文版安装下载地址</title><summary type="text">根据序列号的不同区分为企业版、开发版等。序列号如下：开发版: PTTFM-X467G-P7RH2-3Q6CG-4DMYB企业版: JD8Y6-HQG69-P9H84-XDTPG-34MBB</summary><published>2011-10-12T05:41:00Z</published><updated>2011-10-12T05:41:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/10/12/2208542.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/10/12/2208542.html"/><content type="html">&lt;div&gt;&lt;div&gt;SQL Server 2008 中文试用版下载地址：&lt;/div&gt; &lt;div&gt;&lt;a href="http://sqlserver.dlservice.microsoft.com/dl/download/B/8/0/B808AF59-7619-4A71-A447-F597DE74AC44/SQLFULL_CHS.iso?lcid=2052"&gt;http://sqlserver.dlservice.microsoft.com/dl/download/B/8/0/B808AF59-7619-4A71-A447-F597DE74AC44/SQLFULL_CHS.iso?lcid=2052&lt;/a&gt;&lt;/div&gt; &lt;div&gt;SQL Server 2008 英文试用版下载地址： &lt;br /&gt;&lt;a href="http://sqlserver.dlservice.microsoft.com/dl/download/9/C/0/9C036510-3218-4258-8B03-67DC1D6A497C/SQLFULL_ENU.iso?lcid=1033"&gt;http://sqlserver.dlservice.microsoft.com/dl/download/9/C/0/9C036510-3218-4258-8B03-67DC1D6A497C/SQLFULL_ENU.iso?lcid=1033&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;上面的两个下载包括所有的版本，根据序列号的不同区分为企业版、开发版等。 &lt;br /&gt;序列号如下： &lt;br /&gt;开发版: PTTFM-X467G-P7RH2-3Q6CG-4DMYB &lt;br /&gt;企业版: JD8Y6-HQG69-P9H84-XDTPG-34MBB&lt;/div&gt;  &lt;div&gt;MSDN原版下载地址如下（不需要序列号，已经自带正版序列号）： &lt;br /&gt;英文企业版：ed2k://|file|en_sql_server_2008_enterprise_x86_x64_ia64_dvd_x14-89207.iso|3256915968|00e3c4025db29c15e9b7fc9dc78edb1a|&lt;/div&gt;  &lt;div&gt;中文企业版：ed2k://|file|zh- hans_sql_server_2008_enterprise_x86_x64_ia64_dvd_x14-89199.iso|3517124608|60e7aa741e6f52146fb250dca8b94c49|h=LKY6YD3M5JY2BI2OMGOSPNRTRZE6JA42|/&lt;/div&gt;  &lt;div&gt;微软官方下载：&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx"&gt;http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;本文来自CSDN博客，转载请标明出处：&lt;a href="http://blog.csdn.net/webclass/archive/2008/09/08/2898954.aspx"&gt;http://blog.csdn.net/webclass/archive/2008/09/08/2898954.aspx&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;&lt;span style="font-family: Verdana"&gt;和Visual Studio 2008一样，从官网下载SQL Server 2008的180天试用版其实与正式版内容是基本相同的，唯一的区别就在于安装配置文件中所包含的key。各种版本的SQL Server在进行到这一步之前都是完全一样的：&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family: Verdana"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=6B10C7C1-4F97-42C4-9362-58D4D088CD38&amp;amp;displaylang=zh-cn" target="_blank"&gt;&lt;span style="font-family: Verdana; color: #0000ff"&gt;Microsoft&amp;#174; SQL Server&amp;#174; 2008 Enterprise Evaluation：开发人员试用体验&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=265F08BC-1874-4C81-83D8-0D48DBCE6297&amp;amp;displaylang=zh-cn" target="_blank"&gt;&lt;span style="font-family: Verdana; color: #0000ff"&gt;Microsoft&amp;#174; SQL Server&amp;#174; 2008 Enterprise Evaluation：IT 专业人员试用体验&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana; color: #0000ff"&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;amp;p=2&amp;amp;SrcDisplayLang=zh-cn&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=6b10c7c1-4f97-42c4-9362-58d4d088cd38&amp;amp;u=details.aspx%3ffamilyid%3d58CE885D-508B-45C8-9FD3-118EDD8E6FFF%26displaylang%3dzh-cn" target="_blank"&gt;Microsoft&amp;#174; SQL Server&amp;#174; 2008 Express&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana; color: #0000ff"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7522a683-4cb2-454e-b908-e805e9bd4e28&amp;amp;DisplayLang=zh-cn" target="_blank"&gt;Microsoft&amp;#174; SQL Server&amp;#174; 2008 Express with Tools&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;如果你没有序列号，那么就只能在上面的三种free  edition（Enterprise Evaluation、Express、Express with Advanced  Service）中选择其一。如果在下面填入序列号，那么就会安装此序列号所对应的SQL版本，这一点和Windows Server  2008是相似的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;提供给大家几个key，仅供学习，请不要用作他用。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYB&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;Enterprise: JD8Y6-HQG69-P9H84-XDTPG-34MBB&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;在安装程序DVD中，默认会提供的序列号是由这个文件的内容来决定的：&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family: Verdana"&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;其内容如下：&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;引用:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;;SQLSERVER2008 Configuration File&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;[SQLSERVER2008]&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;PID="***XX-***XX-***XX-***XX-***XX"&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;只要我们将自己拥有的序列号替换PID=后面的那一串，则在安装过程中， 进行到前面提到的输入key一步时，会自动为你填入这里的序列号。微软官方的evaluate版本中没有这个文件，因此默认选择测试版。也就是说，所有的 SQL Server  2008安装介质，正式版与试用版间的差别，仅仅就是这个DefaultSetup.ini的PID。如果你的安装介质没有这个文件，可以按照上面的内容 自己创建。&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family: Verdana"&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;所以大家也不必费心思去找去等所谓的"正式版"了，其实内容跟官网的试用版是相同的，只需要按我提供的key选中对应的版本即可。官网测试版下载申请地址：&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx"&gt;&lt;span style="font-family: Verdana; color: #800080"&gt;http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana"&gt;注意：安装SQL Server 2008必须先给你Visual Studio 2008打上SP1的补丁哦&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2208542.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/10/12/2208542.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094194.html</id><title type="text">WCF 第七章 寄宿 总结</title><summary type="text">当使用WCF寄宿时它能带来很大的灵活性。特别的，WCF服务可以在任何操作系统进程中寄宿。服务宿主，或者仅仅成为&amp;quot;宿主&amp;quot;， 负责启动和关闭服务并为控制服务提供基本的管理函数。为一个基于操作性能要求比如可用性，可信赖性和可管理性的服务选择正确的寄宿环境。 IIS和Windows 进程激活服务(WAS)有用来寄宿WCF服务的内建结构。先前特性只在IIS中可用，比如进程激活，回收和身份管理，已经被移植到WAS中并对除了 HTTP协议的所有协议可用。这让WAS成为一个IIS的超级替代者，但是IIS对寄宿基于HTTP的WCF服务是很理想的。WCF通过ASP.NET 兼容模式支持很多AS</summary><published>2011-06-30T02:30:00Z</published><updated>2011-06-30T02:30:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094194.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094194.html"/><content type="html">&lt;div&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;当使用WCF寄宿时它能带来很大的灵活性。特别的，WCF服务可以在任何操作系统进程中寄宿。服务宿主，或者仅仅成为"宿主"， 负责启动和关闭服务并为控制服务提供基本的管理函数。为一个基于操作性能要求比如可用性，可信赖性和可管理性的服务选择正确的寄宿环境。&lt;/p&gt; &lt;p&gt;IIS和Windows  进程激活服务(WAS)有用来寄宿WCF服务的内建结构。先前特性只在IIS中可用，比如进程激活，回收和身份管理，已经被移植到WAS中并对除了 HTTP协议的所有协议可用。这让WAS成为一个IIS的超级替代者，但是IIS对寄宿基于HTTP的WCF服务是很理想的。WCF通过ASP.NET  兼容模式支持很多ASMX特性。&lt;/p&gt; &lt;p&gt;除了IIS，对寄宿WCF服务来说管理Windows服务也是一个通用技术。这些进程由服务控制管理器(SCM)控制并有一个管理员熟悉的接口。 Visual  Studio有一个定义一个Windows服务的内建模板，所以在易开发和易管理只加你，管理Windows服务为自我寄宿的WCF服务提供了一个很好的 候选方案。&lt;/p&gt; &lt;p&gt;表7.2 简要列出了选择宿主的通用条件。&lt;/p&gt; &lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/157655/2010123012342614.png" alt="" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;=======&lt;br /&gt;转载自&lt;br /&gt;作者：DanielWise&lt;br /&gt;出处：http://www.cnblogs.com/danielWise/&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2094194.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094194.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094193.html</id><title type="text">WCF 第七章 寄宿 定义服务和终结点地址</title><summary type="text">一个WCF服务是一系列终结点集合，每个终结点有一个独一无二的地址。终结点地址和绑定确定了终结点在哪里以及如何监听进入请求。除了终结点地址，服务本身也有地址，称为基地址。 一个服务的基地址用来作为可能在终结点中定义的相对地址的基地址。使用相对地址，而不是绝对地址，终结点地址让在一个服务中管理终结点变得更加容易。通过相对地址，你可以在一个服务中仅通过改变服务基地址就改变所有终结点地址。 当在一个终结点中使用一个相对地址时，相对地址附加到基地址来形成服务基地址。例如，如果一个服务基地址是http://localhost/foo 而终结点地址是bar,终结点将会在http://localhost/fo</summary><published>2011-06-30T02:29:00Z</published><updated>2011-06-30T02:29:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094193.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094193.html"/><content type="html">&lt;div&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;一个WCF服务是一系列终结点集合，每个终结点有一个独一无二的地址。终结点地址和绑定确定了终结点在哪里以及如何监听进入请求。除了终结点地址，服务本身也有地址，称为基地址。&lt;/p&gt; &lt;p&gt;一个服务的基地址用来作为可能在终结点中定义的相对地址的基地址。使用相对地址，而不是绝对地址，终结点地址让在一个服务中管理终结点变得更加容易。通过相对地址，你可以在一个服务中仅通过改变服务基地址就改变所有终结点地址。&lt;/p&gt; &lt;p&gt;当在一个终结点中使用一个相对地址时，相对地址附加到基地址来形成服务基地址。例如，如果一个服务基地址是&lt;a href="http://localhost/foo"&gt;http://localhost/foo&lt;/a&gt; 而终结点地址是bar,终结点将会在&lt;a href="http://localhost/foo/bar"&gt;http://localhost/foo/bar&lt;/a&gt; 监听进入请求消息。&lt;/p&gt; &lt;p&gt;当在一个终结点中使用相对地址时，终结点地址与服务基地址无关。例如，一个服务基地址可以是&lt;a href="http://localhost/foo"&gt;http://localhost/foo&lt;/a&gt;, 而在它内部的一个终结点地址是net.tcp://bar/MyOtherService/. &lt;/p&gt; &lt;p&gt;一个服务可以有多个基地址， 但是每个URI 只有一个。当在一个终结点中使用一个相对地址时， WCF使用满足终结点绑定定义的传输协议来找到服务基地址。例如，如果一个服务定义两个基地址， &lt;a href="http://localhost/"&gt;http://localhost/&lt;/a&gt; 和net.tcp://bigserver/, 一个终结点使用一个basicHttpBinding绑定的相对地址foo， 终结点地址是&lt;a href="http://localhost/foo"&gt;http://localhost/foo&lt;/a&gt;. 如果服务中的另外一个终结点也使用同样的相对地址， 终结点地址是net.tcp/bigserver/foo.&lt;/p&gt; &lt;p&gt;当在IIS中寄宿一个服务时， 服务的基地址是SVC文件所在的IIS虚拟目录的地址。如果MyService.SVC文件位于&lt;a href="http://localhost/foo/"&gt;http://localhost/foo/&lt;/a&gt;, 服务的基地址是&lt;a href="http://localhost/foo"&gt;http://localhost/foo&lt;/a&gt;. 当在IIS中寄宿时由web.config确定的终结点地址必须是相对地址。&lt;/p&gt; &lt;p&gt;列表7.2显示了一个服务的配置文件。注意以下几点:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;基地址. &lt;/strong&gt;服务定义了两个基地址， 每个使用一个不同的协议。如果两个基地址使用同样协议定义， 如何从终结点相对地址创建完全地址是不可能的， 所以WCF将会在服务激活时抛出一个异常。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;空的相对地址. &lt;/strong&gt;第一个终结点的地址是空的。使用同样的协议与服务基地址组合， 终结点地址与服务地址一样。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;非空的相对地址. &lt;/strong&gt;第二个终结点的地址是ws.使用同样的协议与基地址组合， 终结点的地址是&lt;a href="http://localhost:8000/EssentialWCF/ws"&gt;http://localhost:8000/EssentialWCF/ws&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;列表7.12 配置文件中的服务和终结点地址&lt;/p&gt; &lt;div&gt; &lt;div id="highlighter_784987"&gt;&lt;div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;?xml version=&lt;/code&gt;&lt;code&gt;"1.0"&lt;/code&gt; &lt;code&gt;encoding=&lt;/code&gt;&lt;code&gt;"utf-8"&lt;/code&gt; &lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;behaviors /&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;service&amp;nbsp; name=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GoodStockService"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"basicHttpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GoodStockService"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;"secure"&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"wsHttpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GoodStockService"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;"fast"&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"netTcpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GoodStockService"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;host&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;baseAddresses&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;add baseAddress=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://localhost:8000/EssentialWCF"&gt;http://localhost:8000/EssentialWCF&lt;/a&gt;"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;add baseAddress=&lt;/code&gt;&lt;code&gt;"net.&lt;a href="tcp://localhost:8001/EssentialWCF"&gt;tcp://localhost:8001/EssentialWCF&lt;/a&gt;"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/baseAddresses&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/host&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/service&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;使用System.ServiceModel.Description命名空间，你可以从ServiceHost访问所有的地址和绑定信息。列表7.13显示了一段指出这个信息的代码片段。&lt;/p&gt; &lt;p&gt;列表7.13 打印地址和终结点信息的代码片段&lt;/p&gt; &lt;div&gt; &lt;div id="highlighter_686303"&gt;&lt;div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;foreach&lt;/code&gt; &lt;code&gt;(Uri uri &lt;/code&gt;&lt;code&gt;in&lt;/code&gt; &lt;code&gt;serviceHost.BaseAddresses)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.WriteLine(&lt;/code&gt;&lt;code&gt;"Base Addr Uri : {0}"&lt;/code&gt;&lt;code&gt;, uri.AbsoluteUri);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;foreach&lt;/code&gt; &lt;code&gt;(ServiceEndpoint endpoint &lt;/code&gt;&lt;code&gt;in&lt;/code&gt; &lt;code&gt;serviceHost.Description.Endpoints)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.WriteLine(&lt;/code&gt;&lt;code&gt;"\nEndpoint - address: {0}"&lt;/code&gt;&lt;code&gt;, endpoint.Address);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.WriteLine(&lt;/code&gt;&lt;code&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; binding: {0}"&lt;/code&gt;&lt;code&gt;, endpoint.Binding.Name);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.WriteLine(&lt;/code&gt;&lt;code&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contract: {0}"&lt;/code&gt;&lt;code&gt;, endpoint.Contract.Name);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;图片7.6 显示了当运行使用列表7.12中的配置文件的代码输出&lt;/p&gt; &lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/157655/2010123012154628.png" alt="" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;=======&lt;br /&gt;转载自&lt;br /&gt;作者：DanielWise&lt;br /&gt;出处：http://www.cnblogs.com/danielWise/&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2094193.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094193.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094188.html</id><title type="text">WCF 第七章 寄宿 自我寄宿</title><summary type="text">寄宿WCF服务最常用的环境是IIS或者WAS。在一个公共架构上创建，它们都提供鲁棒性进程控制和生命周期回收服务，还有一个熟悉的管理接口。当IIS架构已经在使用时这是对大多数场景来说最合适的解决方案。 然而，也有一些情况你不想在IIS或者WAS中寄宿一个服务。你可能想显式控制事件的启动和停止。或者你可能想提供一个自定义管理接口而不是使用IIS或 者WAS工具。为了实现这个，你可以使用System.ServiceModel命名空间中的ServiceHost类来在任何程序中寄宿一个服务。当你 做这个时，你正在使用一个自我寄宿的WCF服务。 寄宿一个WCF服务最常用的场景是在一个随系统启动和停止的Wi</summary><published>2011-06-30T02:28:00Z</published><updated>2011-06-30T02:28:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094188.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094188.html"/><content type="html">&lt;div&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;寄宿WCF服务最常用的环境是IIS或者WAS。在一个公共架构上创建，它们都提供鲁棒性进程控制和生命周期回收服务，还有一个熟悉的管理接口。当IIS架构已经在使用时这是对大多数场景来说最合适的解决方案。&lt;/p&gt; &lt;p&gt;然而，也有一些情况你不想在IIS或者WAS中寄宿一个服务。你可能想显式控制事件的启动和停止。或者你可能想提供一个自定义管理接口而不是使用IIS或 者WAS工具。为了实现这个，你可以使用System.ServiceModel命名空间中的ServiceHost类来在任何程序中寄宿一个服务。当你 做这个时，你正在使用一个自我寄宿的WCF服务。&lt;/p&gt; &lt;p&gt;寄宿一个WCF服务最常用的场景是在一个随系统启动和停止的Windows托管服务中。一个Windows托管服务可能运行在支持WCF的一个操作系统 上，包括Windows XP, Windows 2003 Server, Windows Vista 或者Windows Server  2008. 这在这一章的&amp;#8221;在一个Windows 托管服务中自我寄宿&amp;#8221;中详细介绍。&lt;/p&gt; &lt;p&gt;另外一个寄宿服务的场景是在一个桌面应用程序中，使用WinForms(Win 窗体程序)或者WPF(Windows  Presentation Framework，Windows  呈现架构)或者一个命令行控制台应用程序。服务可以使用对等网，使用一个广泛使用的地址以便于其他客户端可以给它发送消息，或者以一些其他方式来宣传它的 地址。如果服务使用一个一致的队列作为传输协议，消息可以发送给服务即便客户端没有在运行。一个一致的队列，由MSMQ实现或者是一个相关数据库的表，是 客户端和服务端实现通信的非常好的结构；客户端和服务端可能临时是彼此断开的。&lt;/p&gt; &lt;p&gt;实现一个自我寄宿服务是非常容易的。列表7.1列出了三个步骤。宿主，是创建ServiceHost对象并调用它的Open方法的程序，负责保持可用直到 需要关闭的时候。当创建ServiceHost时有一些选项，比如从哪里获取服务基地址和是否创建一个单例，但也就是如此。&lt;/p&gt; &lt;p&gt;第一章的列表1.1 和1.2 描述了一个自我寄宿的服务最少需求。这些列表显示了一个可以在一个服务的控制台或者在一个管理员的桌面运行的自我寄宿的控制台应用。&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;在一个Windows 托管服务中自我寄宿&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Windows托管服务时可以由服务控制管理器(Service Control Manager,  SCM)控制的操作系统进程。使用微软管理控制台服务(Microsoft Management Console, MMC)管理它们,  但是Windows 设备管理(Window Management Instrumentation, WMI)和SCM APIs  让它们对其他控制工具和脚本程序都可以使用。通过这些工具你可以控制很多特性，比如是否它们随操作系统自我启动以及它们运行时的Windows  身份。Windows 服务是一个企业应用比如Microsoft SQL Server 和Microsoft Exchange 的寄宿环境。&lt;/p&gt; &lt;p&gt;Windows 托管服务基础，可以在使用Win32  APIs的非托管代码和继承自System.ServiceProcess命名空间的ServiceBase类的托管代码中访问，提供了一个基本的管理接 口但是没有为你的代码做任何关于实际寄宿，扩展，安全和可信赖的工作。你负责完成所有的通信(MSMQ,  命名管道和TCP等等)和线程，实例以及控制流。幸运的是，这些特性在WCF中实现了，所有当你在一个Windows服务中寄宿一个WCF服务时，这些已 经为你做好了。&lt;/p&gt; &lt;p&gt;Visual Studio 有一个内建的定义Windows 服务的模板。当从这个模板创建一个工程时，基本有一个静态main()  负责启动你的服务以及一个你可以放你的代码的继承自ServiceBase的类。基本代码需要在两个步骤完成: 添加WCF  ServiceHost类实例化你的服务并使用SCM注册服务。&lt;/p&gt; &lt;p&gt;首先，你需要添加代码到OnStart方法来开始处理接收到的消息。在引入WCF之前，这是你需要创建线程池，监听器和一个回收结构，所有的典型设置都不 能使用配置文件。但是通过使用WCF，所有你需要在OnStart方法中做的是创建ServiceHost并开启监听。使用EventLog来记录一条启 动消息也是有帮助的。&lt;/p&gt; &lt;p&gt;其次，你需要实现一个ProjectInstaller,  在System.Configuration.Install命名空间中定义和引用。ProjectInstaller类用来在目标机器安装托管服务。你 可以在一个安装程序中做这个或者你可以把它加入到服务本身。为了安装服务，接下来你需要使用installutil.exe实例来使用SCM注册服务。在 运行实例以后，服务已经准备通过SCM运行。&lt;/p&gt; &lt;p&gt;列表7.9显示了完全实现的Windows服务。&lt;/p&gt; &lt;p&gt;列表7.9 寄宿在一个Windows服务中WCF服务&lt;/p&gt; &lt;div&gt; &lt;div nogutter="" id="highlighter_530578"&gt;&lt;div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ComponentModel;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Configuration.Install;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ServiceProcess;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ServiceModel;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ServiceModel.Description;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;namespace&lt;/code&gt; &lt;code&gt;EssentialWCF&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[RunInstaller(&lt;/code&gt;&lt;code&gt;true&lt;/code&gt;&lt;code&gt;)]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;ProjectInstaller : Installer&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;private&lt;/code&gt; &lt;code&gt;ServiceProcessInstaller process;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;private&lt;/code&gt; &lt;code&gt;ServiceInstaller service;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;ProjectInstaller()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;process = &lt;/code&gt;&lt;code&gt;new&lt;/code&gt; &lt;code&gt;ServiceProcessInstaller();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;process.Account = ServiceAccount.LocalSystem;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;service = &lt;/code&gt;&lt;code&gt;new&lt;/code&gt; &lt;code&gt;ServiceInstaller();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;service.ServiceName = &lt;/code&gt;&lt;code&gt;"EssentialWCF"&lt;/code&gt;&lt;code&gt;;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Installers.Add(process);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Installers.Add(service);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[ServiceContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;interface&lt;/code&gt; &lt;code&gt;IStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[OperationContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;double&lt;/code&gt; &lt;code&gt;GetPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;StockService : IStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;double&lt;/code&gt; &lt;code&gt;GetPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;return&lt;/code&gt; &lt;code&gt;94.85;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;partial&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;Service : ServiceBase&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;Service()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;protected&lt;/code&gt; &lt;code&gt;override&lt;/code&gt; &lt;code&gt;void&lt;/code&gt; &lt;code&gt;OnStart(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt;&lt;code&gt;[] args)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;ServiceHost serviceHost = &lt;/code&gt;&lt;code&gt;new&lt;/code&gt; &lt;code&gt;ServiceHost(&lt;/code&gt;&lt;code&gt;typeof&lt;/code&gt;&lt;code&gt;(StockService));&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;serviceHost.Open();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;ServiceEndpoint endpoint = serviceHost.Description.Endpoints[0];&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;EventLog.WriteEntry(endpoint.Contract.Name + &lt;/code&gt;&lt;code&gt;"Started"&lt;/code&gt; &lt;code&gt;+&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;"listening on "&lt;/code&gt; &lt;code&gt;+ endpoint.Address + &lt;/code&gt;&lt;code&gt;" ("&lt;/code&gt; &lt;code&gt;+ endpoint.Binding.Name + &lt;/code&gt;&lt;code&gt;")"&lt;/code&gt;&lt;code&gt;,&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;System.Diagnostics.EventLogEntryType.Information);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;protected&lt;/code&gt; &lt;code&gt;override&lt;/code&gt; &lt;code&gt;void&lt;/code&gt; &lt;code&gt;OnStop()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;EventLog.WriteEntry(&lt;/code&gt;&lt;code&gt;"EssentialWCF Stopping"&lt;/code&gt;&lt;code&gt;, System.Diagnostics.EventLogEntryType.Information);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;图片7.5 显示了当EffectiveWCF服务启动时的服务控制管理器的截图。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/danielWise/201012/201012281846126306.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="12-28-2010 6-48-36 PM" src="http://images.cnblogs.com/cnblogs_com/danielWise/201012/201012281846147678.png" alt="12-28-2010 6-48-36 PM" border="0" height="623" width="790" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;=======&lt;br /&gt;转载自&lt;br /&gt;作者：DanielWise&lt;br /&gt;出处：http://www.cnblogs.com/danielWise/&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2094188.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094188.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094191.html</id><title type="text">WCF 第七章 寄宿 在一个进程中寄宿多个服务</title><summary type="text">将应用程序功能聚集到正确的服务层次是系统设计的一个必须元素。创建一个有很多接口的系统，这个系统也会变得很令人迷惑。创建只有很多接口的一个系统，这个系统会是变成一个很难改变的整体。 在第二章”契约”，我们描述了如何将多个类接口集成到一个单一的终结点中。这是通过.NET接口集成完成的。我们也描述了如何在一个单一服务内部暴露多个 终结点。这一部分提供了一个可供选择的方案。不是通过将两个接口合并为一个然后将聚合作为一个服务暴露出来，这里我们描述的是如何在一个单一的操作系统进 程内分别暴露两个服务。 一个ServiceHost 仅暴露一个服务。所以，为了在一个操作系统进程内暴露多个服务，你需要实现多个S</summary><published>2011-06-30T02:28:00Z</published><updated>2011-06-30T02:28:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094191.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094191.html"/><content type="html">&lt;div&gt;&lt;p&gt;将应用程序功能聚集到正确的服务层次是系统设计的一个必须元素。创建一个有很多接口的系统，这个系统也会变得很令人迷惑。创建只有很多接口的一个系统，这个系统会是变成一个很难改变的整体。&lt;/p&gt; &lt;p&gt;在第二章&amp;#8221;契约&amp;#8221;，我们描述了如何将多个类接口集成到一个单一的终结点中。这是通过.NET接口集成完成的。我们也描述了如何在一个单一服务内部暴露多个 终结点。这一部分提供了一个可供选择的方案。不是通过将两个接口合并为一个然后将聚合作为一个服务暴露出来，这里我们描述的是如何在一个单一的操作系统进 程内分别暴露两个服务。&lt;/p&gt; &lt;p&gt;一个ServiceHost  仅暴露一个服务。所以，为了在一个操作系统进程内暴露多个服务，你需要实现多个ServiceHost类。而这正是WAS做的工作-它为每个服务创建一个 ServiceHost并通过一个SVC文件激活。SVC包含了在应用配置文件(web.config)中描述的终结点的服务名。终结点列出了地址，绑定 和契约，所以ServiceHost有它需要的所有东西来监听并分发消息。&lt;/p&gt; &lt;p&gt;当自我寄宿服务时， 你可以同样的实例化多个ServiceHosts.  每个宿主时完全独立的，而不是共享同样的操作系统进程。每个宿主在app.config  文件的&amp;lt;system.servicemodel&amp;gt;部分有它自己的配置信息。在ServiceHost  启动时，线程和实例管理由WCF独立管理，所以宿主程序不需要实现那个逻辑。&lt;/p&gt; &lt;p&gt;列表7.10描述了一个寄宿两个服务的控制台应用。GoodStockService的GetStockPrice方法在返回结果前等待10秒，而 GreatStockService的同样方法立即返回结果。因为服务行为在WCF中配置，这个简单的程序是多线程的，所有当 GoodStockService在睡眠时，GreatStockService对请求进行反馈。即便是最慢的服务也是多线程的，按照需要分发多个入站消 息给GetStockPrice实例。&lt;/p&gt; &lt;p&gt;列表7.10 在一个进程中的多个自我寄宿服务&lt;/p&gt; &lt;div&gt; &lt;div nogutter="" id="highlighter_623635"&gt;&lt;div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;namespace&lt;/code&gt; &lt;code&gt;EssentialWCF&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[ServiceContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;GoodStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[OperationContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;double&lt;/code&gt; &lt;code&gt;GetStockPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Thread.Sleep(10000);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;return&lt;/code&gt; &lt;code&gt;94.85;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[ServiceContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;GreatStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[OperationContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;double&lt;/code&gt; &lt;code&gt;GetStockPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;return&lt;/code&gt; &lt;code&gt;94.85;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;Program&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;//Host the service within this EXE console application.&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;static&lt;/code&gt; &lt;code&gt;void&lt;/code&gt; &lt;code&gt;Main(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt;&lt;code&gt;[] args)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;ServiceDescription desc = &lt;/code&gt;&lt;code&gt;null&lt;/code&gt;&lt;code&gt;;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;ServiceHost serviceHost1 = &lt;/code&gt;&lt;code&gt;new&lt;/code&gt; &lt;code&gt;ServiceHost(&lt;/code&gt;&lt;code&gt;typeof&lt;/code&gt;&lt;code&gt;(GoodStockService));&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;serviceHost1.Open();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.WriteLine(&lt;/code&gt;&lt;code&gt;"Service #1 is ready."&lt;/code&gt;&lt;code&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;ServiceHost serviceHost2 = &lt;/code&gt;&lt;code&gt;new&lt;/code&gt; &lt;code&gt;ServiceHost(&lt;/code&gt;&lt;code&gt;typeof&lt;/code&gt;&lt;code&gt;(GreatStockService));&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;serviceHost2.Open();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.WriteLine(&lt;/code&gt;&lt;code&gt;"Service #2 is ready."&lt;/code&gt;&lt;code&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.WriteLine(&lt;/code&gt;&lt;code&gt;"Press&amp;nbsp; to terminate.\n\n"&lt;/code&gt;&lt;code&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;Console.ReadLine();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;//Close the ServiceHosts to shutdown the service.&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;serviceHost1.Close();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;serviceHost2.Close();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;列表7.11的app.config  文件在&amp;lt;System.ServiceHost&amp;gt;部分有两个入口-一个服务一个入口。每个服务有一个独一无二的基地址。注意每个服务里的每个 终结点有一个空地址。一个有一个空地址的终结点在服务基地址上监听进入的请求消息。这样至多可以使用与基地址相同的URI方案来指定一个服务终结点的空地 址。&lt;/p&gt; &lt;p&gt;列表7.11 在一个进程内设置多个自我寄宿服务的配置&amp;nbsp;&lt;/p&gt;  &lt;div show=""&gt;&lt;div&gt;&lt;a viewsource="" style="width: 16px; height: 16px;" title="view source" href="http://www.cnblogs.com/danielWise/archive/2010/12/30/1921472.html#viewSource"&gt;view source&lt;/a&gt;&lt;a printsource="" style="width: 16px; height: 16px;" title="print" href="http://www.cnblogs.com/danielWise/archive/2010/12/30/1921472.html#printSource"&gt;print&lt;/a&gt;&lt;a about="" style="width: 16px; height: 16px;" title="?" href="http://www.cnblogs.com/danielWise/archive/2010/12/30/1921472.html#about"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;?xml version=&lt;/code&gt;&lt;code&gt;"1.0"&lt;/code&gt; &lt;code&gt;encoding=&lt;/code&gt;&lt;code&gt;"utf-8"&lt;/code&gt; &lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;behaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;serviceBehaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;behavior name=&lt;/code&gt;&lt;code&gt;"mexServiceBehavior"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;serviceMetadata httpGetEnabled=&lt;/code&gt;&lt;code&gt;"true"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/behavior&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/serviceBehaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/behaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;service behaviorConfiguration=&lt;/code&gt;&lt;code&gt;"mexServiceBehavior"&lt;/code&gt; &lt;code&gt;name=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GoodStockService"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"basicHttpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GoodStockService"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;host&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;baseAddresses&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;add baseAddress=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://localhost:8001/EssentialWCF"&gt;http://localhost:8001/EssentialWCF&lt;/a&gt;"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/baseAddresses&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/host&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/service&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;service behaviorConfiguration=&lt;/code&gt;&lt;code&gt;"mexServiceBehavior"&lt;/code&gt; &lt;code&gt;name=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GreatStockService"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"basicHttpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;23&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"EssentialWCF.GreatStockService"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;host&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;25&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;baseAddresses&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;26&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;add baseAddress=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://localhost:8002/EssentialWCF"&gt;http://localhost:8002/EssentialWCF&lt;/a&gt;"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;27&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/baseAddresses&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;28&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/host&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;29&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/service&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;31&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;32&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;=======&lt;br /&gt;转载自&lt;br /&gt;作者：DanielWise&lt;br /&gt;出处：http://www.cnblogs.com/danielWise/&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2094191.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094191.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094186.html</id><title type="text">WCF 第七章 寄宿 在一个IIS寄宿服务中开启ASMX特性</title><summary type="text">在WCF之前，ASMX是ASP.NET Web 服务中一个公共处理方式。它对公共Web服务需求提供了出色的支持并通过ASP.NET HTTP管道提供了鲁棒性扩展能力。在WCF中，服务被设计为不需了解它们的寄宿模且独立传输。所以WCF服务不能依赖于HTTP管道内部的实现，比如 HTTP.SYS。 和ASMX一样，WCF也提供一个鲁棒性扩展模型。但是除了使用HTTP管道，它也采用信道栈。WCF中的信道非常灵活。它们了解传输协议，比如HTTP，但是也了解其他的协议元素比如安全和事务。信道栈在第三章”信道”和第四章”绑定”中描述。 WCF支持IIS中的一个特殊寄宿模型: ASP.NET 兼容模式。当运</summary><published>2011-06-30T02:27:00Z</published><updated>2011-06-30T02:27:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094186.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094186.html"/><content type="html">&lt;div&gt;&lt;p&gt;在WCF之前，ASMX是ASP.NET&amp;nbsp; Web 服务中一个公共处理方式。它对公共Web服务需求提供了出色的支持并通过ASP.NET  HTTP管道提供了鲁棒性扩展能力。在WCF中，服务被设计为不需了解它们的寄宿模且独立传输。所以WCF服务不能依赖于HTTP管道内部的实现，比如 HTTP.SYS。&lt;/p&gt; &lt;p&gt;和ASMX一样，WCF也提供一个鲁棒性扩展模型。但是除了使用HTTP管道，它也采用信道栈。WCF中的信道非常灵活。它们了解传输协议，比如HTTP，但是也了解其他的协议元素比如安全和事务。信道栈在第三章&amp;#8221;信道&amp;#8221;和第四章&amp;#8221;绑定&amp;#8221;中描述。&lt;/p&gt; &lt;p&gt;WCF支持IIS中的一个特殊寄宿模型: ASP.NET 兼容模式。当运行在这个模式中时，ASP.NET  为WCF服务提供寄宿环境。因此，在&amp;lt;system.web/hostingEnvironment&amp;gt;和&amp;lt;system.web /compilation&amp;gt;是合法的。然而，并不是所有的ASP.NET HTTP特性都在这个模式中启用: &lt;br /&gt;&amp;nbsp;&amp;nbsp; 1. &lt;strong&gt;HTTPContext.Current. &lt;/strong&gt;在ASP.NET HTTP 管道中设置为空。在一个WCF服务中，你可以使用OperationContext.Current对象来实现类似的目的。&lt;/p&gt; &lt;p&gt;2. &lt;strong&gt;文件/Url 认证&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 3. 模仿&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 4. 会话状态&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 5. &amp;lt;system.web/Globalization&amp;gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 6. ConfigurationManager.AppSettings. &lt;/strong&gt;你仅可以在web.config 的根节点或者虚拟应用上面获得设置，因为httpContext是空的。&lt;/p&gt; &lt;p&gt;为了开启运行在ASP.NET兼容模式的ASP.NET  特性，需要改两个设置。在应用层，你必须在web.config中设 置&amp;lt;system.serviceModel&amp;gt;/&amp;lt;serviceHostingEnvironment&amp;gt; /&amp;lt;aspNetCompatibilityEnabled&amp;gt;为true。因为ASMX在服务层是一个选择进入模式，你不许在服务层设置 AspNetCompatibilityRequirements为Allowed。通过这两个设置，几乎所有的ASP.NET特性都可以在WCF服务中 使用。表7.1描述了这两种设置的关系。&lt;/p&gt; &lt;p&gt;表7.1 在一个WCF服务中允许ASMX特性的设置&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/danielWise/201012/201012271737572607.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="12-27-2010 2-53-12 PM" src="http://images.cnblogs.com/cnblogs_com/danielWise/201012/201012271737588887.png" alt="12-27-2010 2-53-12 PM" border="0" height="323" width="507" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;然而，有一些部分需要更进一步的解释。&lt;/p&gt; &lt;p&gt;1. &lt;strong&gt;HTTPContext.Current。&lt;/strong&gt;ConfigurationManager.AppSettings和ConfigurationManager.GetSection同时工作。HttpContext.Current将在WCF线程间流转。&lt;/p&gt; &lt;p&gt;2. &lt;strong&gt;全球化。&lt;/strong&gt;你可以设置线程的文化区域并在&amp;lt;system.web&amp;gt;中访问国际化部分。&lt;/p&gt; &lt;p&gt;3. &lt;strong&gt;模仿。&lt;/strong&gt;WCF支持使用行为在服务层和操作层实现。这是ASP.NET的额外实现方式。如果服务通过WCF模仿，会在ASP.NET中重载设置。如果服务没有实现模仿，ASP.NET 规则将会使用。&lt;/p&gt; &lt;p&gt;4. &lt;strong&gt;会话状态。&lt;/strong&gt;这是完全继承自ASP.NET配置的实现。你可以使用进程，服务或者SQL 持续结构来保存状态。&lt;/p&gt; &lt;p&gt;在ASP.NET  兼容模式开启后，服务可以利用ASP.NET的特性。在列表7.5中，我们使用两个ASP.NET特性。首先，我们使用ASMX的 SessionState特性来存储会话层状态。实例可以设置为PerCall,  PerSession或者Single.这些在第五章&amp;#8221;行为&amp;#8221;中被深入定义。在这个例子中，我们使用PerSession,以便于如果一个客户端多次使用 同样的代理调用服务，会话状态将会在不同调用间保存。WCF中有很多其他的方式来存储会话层数据，但是对那些对ASMX很熟悉的人来说，这是一个方便的架 构。其次，我们在web.config中使用熟悉的AppSettings部分来存储特殊应用的配置数据。在服务端代 码，ConfigurationManager对象的AppSettings集合用来收集这些值。&lt;/p&gt; &lt;p&gt;列表7.5 访问ASMX会话状态和配置设置&lt;/p&gt; &lt;div&gt; &lt;div nogutter="" id="highlighter_232559"&gt;&lt;div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ServiceModel;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Runtime.Serialization;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ServiceModel.Activation;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Web;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Configuration;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;namespace&lt;/code&gt; &lt;code&gt;Services&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[DataContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;StockPrice&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;//[DataMember] public string source;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[DataMember] &lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;double&lt;/code&gt; &lt;code&gt;price;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[DataMember] &lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;int&lt;/code&gt; &lt;code&gt;calls;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[ServiceContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;interface&lt;/code&gt; &lt;code&gt;IStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[OperationContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;StockPrice GetPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Required)]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;StockService : IStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;StockPrice GetPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;StockPrice p = &lt;/code&gt;&lt;code&gt;new&lt;/code&gt; &lt;code&gt;StockPrice();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;int&lt;/code&gt; &lt;code&gt;nCalls = 0;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;if&lt;/code&gt; &lt;code&gt;(HttpContext.Current.Session[&lt;/code&gt;&lt;code&gt;"cnt"&lt;/code&gt;&lt;code&gt;] != &lt;/code&gt;&lt;code&gt;null&lt;/code&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;nCalls = (&lt;/code&gt;&lt;code&gt;int&lt;/code&gt;&lt;code&gt;)HttpContext.Current.Session[&lt;/code&gt;&lt;code&gt;"cnt"&lt;/code&gt;&lt;code&gt;];&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;HttpContext.Current.Session[&lt;/code&gt;&lt;code&gt;"cnt"&lt;/code&gt;&lt;code&gt;] = ++nCalls;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;p.calls = nCalls;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;p.price = 94.85;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;//p.source = ConfigurationManager.AppSettings["StockSource"];&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;return&lt;/code&gt; &lt;code&gt;p;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;为了让PerSession实例工作，在客户端必须保存一个会话身份标识以便于从客户端到服务端的顺序调用可以将会话ID返回给服务端。对于 ASP.NET，这是通过在HTTP头中传输的一个客户端cookie实现的。为了让通过ASMX的PerSession实例工作，客户端必须开启 cookies.因为标准HTTP绑定，basicHttpBinding和wsHttpBinding,默认情况下不允许cookies,你必须在客户 端app.config中定义一个AllowCookies=true的绑定配置。列表7.6显示了在服务端使能 aspNetCompatibility.&lt;/p&gt; &lt;p&gt;列表7.6 在服务配置使能ASP.NET 兼容&lt;/p&gt; &lt;div&gt; &lt;div id="highlighter_248095"&gt;&lt;div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;?xml version=&lt;/code&gt;&lt;code&gt;"1.0"&lt;/code&gt; &lt;code&gt;encoding=&lt;/code&gt;&lt;code&gt;"utf-8"&lt;/code&gt; &lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;serviceHostingEnvironment aspNetCompatibilityEnabled=&lt;/code&gt;&lt;code&gt;"true"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;behaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;serviceBehaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;behavior name=&lt;/code&gt;&lt;code&gt;"MEXServiceTypeBehavior"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;serviceMetadata httpGetEnabled=&lt;/code&gt;&lt;code&gt;"true"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/behavior&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/serviceBehaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/behaviors&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;bindings /&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;service behaviorConfiguration=&lt;/code&gt;&lt;code&gt;"MEXServiceTypeBehavior"&lt;/code&gt; &lt;code&gt;name=&lt;/code&gt;&lt;code&gt;"Services.StockService"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"basicHttpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"Services.IStockService"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;"mex"&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"mexHttpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"IMetadataExchange"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/service&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;列表7.7 显示了如何在客户端配置文件使能cookies.这个列表由Visual Studio的添加服务引用生成。注意默认的allowCookies设置为true.&lt;/p&gt; &lt;p&gt;列表7.7 在客户端配置文件中使能Cookies&lt;/p&gt; &lt;div&gt; &lt;div id="highlighter_401844"&gt;&lt;div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;?xml version=&lt;/code&gt;&lt;code&gt;"1.0"&lt;/code&gt; &lt;code&gt;encoding=&lt;/code&gt;&lt;code&gt;"utf-8"&lt;/code&gt; &lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;bindings&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;basicHttpBinding&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;binding name=&lt;/code&gt;&lt;code&gt;"BasicHttpBinding_IStockService"&lt;/code&gt; &lt;code&gt;closeTimeout=&lt;/code&gt;&lt;code&gt;"00:01:00"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;openTimeout=&lt;/code&gt;&lt;code&gt;"00:01:00"&lt;/code&gt; &lt;code&gt;receiveTimeout=&lt;/code&gt;&lt;code&gt;"00:10:00"&lt;/code&gt; &lt;code&gt;sendTimeout=&lt;/code&gt;&lt;code&gt;"00:01:00"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;span style=&lt;/code&gt;&lt;code&gt;"color: #ff0000;"&lt;/code&gt;&lt;code&gt;&amp;gt;allowCookies=&lt;/code&gt;&lt;code&gt;"true"&lt;/code&gt;&lt;code&gt;&amp;lt;/span&amp;gt; bypassProxyOnLocal=&lt;/code&gt;&lt;code&gt;"false"&lt;/code&gt; &lt;code&gt;hostNameComparisonMode=&lt;/code&gt;&lt;code&gt;"StrongWildcard"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;maxBufferSize=&lt;/code&gt;&lt;code&gt;"65536"&lt;/code&gt; &lt;code&gt;maxBufferPoolSize=&lt;/code&gt;&lt;code&gt;"524288"&lt;/code&gt; &lt;code&gt;maxReceivedMessageSize=&lt;/code&gt;&lt;code&gt;"65536"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;messageEncoding=&lt;/code&gt;&lt;code&gt;"Text"&lt;/code&gt; &lt;code&gt;textEncoding=&lt;/code&gt;&lt;code&gt;"utf-8"&lt;/code&gt; &lt;code&gt;transferMode=&lt;/code&gt;&lt;code&gt;"Buffered"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;useDefaultWebProxy=&lt;/code&gt;&lt;code&gt;"true"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;readerQuotas maxDepth=&lt;/code&gt;&lt;code&gt;"32"&lt;/code&gt; &lt;code&gt;maxStringContentLength=&lt;/code&gt;&lt;code&gt;"8192"&lt;/code&gt; &lt;code&gt;maxArrayLength=&lt;/code&gt;&lt;code&gt;"16384"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;maxBytesPerRead=&lt;/code&gt;&lt;code&gt;"4096"&lt;/code&gt; &lt;code&gt;maxNameTableCharCount=&lt;/code&gt;&lt;code&gt;"16384"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;security mode=&lt;/code&gt;&lt;code&gt;"None"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;transport clientCredentialType=&lt;/code&gt;&lt;code&gt;"None"&lt;/code&gt; &lt;code&gt;proxyCredentialType=&lt;/code&gt;&lt;code&gt;"None"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;realm=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;extendedProtectionPolicy policyEnforcement=&lt;/code&gt;&lt;code&gt;"Never"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/transport&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;message clientCredentialType=&lt;/code&gt;&lt;code&gt;"UserName"&lt;/code&gt; &lt;code&gt;algorithmSuite=&lt;/code&gt;&lt;code&gt;"Default"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/security&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/binding&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/basicHttpBinding&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;23&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/bindings&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;client&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;25&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://localhost/StockService.svc"&gt;http://localhost/StockService.svc&lt;/a&gt;"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;26&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"basicHttpBinding"&lt;/code&gt; &lt;code&gt;bindingConfiguration=&lt;/code&gt;&lt;code&gt;"BasicHttpBinding_IStockService"&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;27&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"localhost.IStockService"&lt;/code&gt; &lt;code&gt;name=&lt;/code&gt;&lt;code&gt;"BasicHttpBinding_IStockService"&lt;/code&gt; &lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;28&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/client&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;29&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;WCF中的开启ASP.NET 模拟与.NET 1.X  中的实现方式一样。通过在web.config文件的&amp;lt;system.web&amp;gt;部分包含&amp;lt;identity  impersionate=&amp;#8221;true&amp;#8221;&amp;gt;实现的。当你做这个时，客户端验证被自动发送给服务端，服务端使用客户端验证来执行操作。&lt;/p&gt; &lt;p&gt;使能模仿可以使用两种方式中的任意一种。为了在服务层设置它，在服务行为中使用 impersionateCallerForAllOperations=true，在操作行为中使用 ImpersionationOption.Allowed.为了在操作层开启它，在操作行为中使用 ImpersonationOption.Required，同时不在服务行为中引用任何内容。&lt;/p&gt; &lt;p&gt;列表7.8显示了操作层的模拟设置，假设它没有在web.config的服务层允许。当一个客户端访问服务端时，用户的登录身份在RequestedBy 成员中返回。如果操作行为被移除，RequestedBy成员默认风拿回网络服务。模拟会在第八章&amp;#8221;安全&amp;#8221;详细介绍。&lt;/p&gt; &lt;p&gt;列表7.8 使能模拟&lt;/p&gt;  &lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ServiceModel;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Runtime.Serialization;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.ServiceModel.Activation;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Web;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Configuration;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;using&lt;/code&gt; &lt;code&gt;System.Security.Principal;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;namespace&lt;/code&gt; &lt;code&gt;Services&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[DataContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;StockPrice&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[DataMember] &lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;double&lt;/code&gt; &lt;code&gt;price;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[DataMember] &lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;string&lt;/code&gt; &lt;code&gt;requestedBy;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[ServiceContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;interface&lt;/code&gt; &lt;code&gt;IStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[OperationContract]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;StockPrice GetPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[ServiceBehavior]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Required)]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;class&lt;/code&gt; &lt;code&gt;StockService : IStockService&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;[OperationBehavior(Impersonation=ImpersonationOption.Required)]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;public&lt;/code&gt; &lt;code&gt;StockPrice GetPrice(&lt;/code&gt;&lt;code&gt;string&lt;/code&gt; &lt;code&gt;ticker)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;StockPrice p = &lt;/code&gt;&lt;code&gt;new&lt;/code&gt; &lt;code&gt;StockPrice();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;span style=&lt;/code&gt;&lt;code&gt;"color: #ff0000;"&lt;/code&gt;&lt;code&gt;&amp;gt; p.requestedBy = WindowsIdentity.GetCurrent().Name&amp;lt;/span&amp;gt;;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;p.price = 94.85;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;return&lt;/code&gt; &lt;code&gt;p;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;code&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;=======&lt;br /&gt;转载自&lt;br /&gt;作者：DanielWise&lt;br /&gt;出处：http://www.cnblogs.com/danielWise/&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2094186.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094186.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094185.html</id><title type="text">WCF 第七章 寄宿 在IIS7中寄宿服务</title><summary type="text">IIS6在Windows 2003和Windows XP SP2中存在，应用程序池作为一个运行时容器来寄宿应用程序。这允许对启动和关闭的控制，在每一个进程的基础上进行身份认证和回收服务。它原本就提供了跨 应用程序的进程隔离功能，这个功能带来了很大的可信赖性。总的来说进程管理是由应用程序池架构处理的。 IIS7在Windows Vista和Windows Server 2008 中存在，进程管理已经实现对多种协议支持并移植到WAS中。ASP.NET也扩展来支持进程激活和WAS中的服务寄宿。 图片7.4 描述了在WAS架构上的IIS7. 在IIS7中寄宿一个服务的三个最小的步骤在第一章描述了。简短</summary><published>2011-06-30T02:26:00Z</published><updated>2011-06-30T02:26:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094185.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094185.html"/><content type="html">&lt;div&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;IIS6在Windows 2003和Windows XP  SP2中存在，应用程序池作为一个运行时容器来寄宿应用程序。这允许对启动和关闭的控制，在每一个进程的基础上进行身份认证和回收服务。它原本就提供了跨 应用程序的进程隔离功能，这个功能带来了很大的可信赖性。总的来说进程管理是由应用程序池架构处理的。&lt;/p&gt; &lt;p&gt;IIS7在Windows Vista和Windows Server 2008 中存在，进程管理已经实现对多种协议支持并移植到WAS中。ASP.NET也扩展来支持进程激活和WAS中的服务寄宿。&lt;/p&gt; &lt;p&gt;图片7.4 描述了在WAS架构上的IIS7.&lt;/p&gt; &lt;p&gt;在IIS7中寄宿一个服务的三个最小的步骤在第一章描述了。简短的说，你必须创建一个IIS虚拟应用，创建一个SVC文件来定义服务实现，在web.config中添加&amp;lt;system.serviceModel&amp;gt;部分。&lt;/p&gt; &lt;p&gt;为了在IIS中寄宿一个WCF服务，你首先需要定义一个虚拟应用。一个IIS中的虚拟应用由一个站点，一个协议监听器和进程激活组成。站点是一个存储文件 的虚拟目录。监听器进程是IIS的w3svc并为网络I/O分发http.sys。进程激活为代码维护运行时环境并在IIS中定义为一个AppPool.&lt;/p&gt; &lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/157655/2010122614192582.jpg" alt="" /&gt;&lt;/p&gt; &lt;p&gt;图片7.4 在WAS中实现IIS&lt;/p&gt; &lt;p&gt;在虚拟应用定义好了以后，你必须在虚拟目录中放置一个SVC文件和一个web.config文件。SVC文件包含了对服务实现的引用而web.config定义了终结点的地址，绑定和契约以及服务的行为。&lt;/p&gt; &lt;p&gt;SVC文件将会在三个地方查找服务实现: 首先是SVC文件本身，然后是虚拟目录的/bin文件夹，最后在机器的GAC中。SVC文件类似IIS6中的ASMX文件。&lt;/p&gt; &lt;p&gt;web.config文件定义了服务和终结点，WCF的ABCs,一个地址，一个绑定和一个契约。因为服务由IIS寄宿，而IIS只知道HTTP协议(相 对于TCP或者MSMQ)，web.config文件的终结点必须使用一个绑定将HTTP确定为传输协议。三个内建的标准绑 定，basicHttpBinding,wsHttpBinding和wsDualHttpBinding,使用这个传输协议，所以这些可以由IIS寄宿 的服务的终结点使用。如果你定义了一个使用一个基于不同传输协议的终结点，比如TCP或者MSMQ(netTcpBinding)当服务收下你激活时会抛 出一个运行时异常。地址应该是一个相对地址因为服务的基地址由协议绑定和SVC文件的虚拟目录定义了。&lt;/p&gt; &lt;p&gt;让我们考虑一下当一个虚拟应用创建后会发生什么，当第一个HTTP请求抵达应用以后，顺序请求是如何处理的。&lt;/p&gt; &lt;p&gt;当你使用IIS管理器创建一个虚拟应用，虚拟应用的关联URL由IIS(w3svc)注册。在那个点，所有由HTTP协议监听适配器接收的请求都被发送去 处理。HTTP协议监听适配器是HTTP.SYS， 这是一个系统驱动。监听适配器架构在本章节的"在Windows  进程激活管理服务中寄宿一个服务"部分描述。&lt;/p&gt; &lt;p&gt;当对一个特殊SVC文件的第一个请求从协议监听器到达时，IIS调用WAS来启动工作进程w3sp.exe,如果它还没有启动的话。工作进程被那个虚拟应 用的AppPool委派。ASP.NET  应用程序管理器在工作进程中负责接收IIS/WAS发来的请求并载入WCF寄宿模块和处理模块。WCF寄宿层在web.config中 的&amp;lt;servicemodel&amp;gt;部分寻找并使用一个ServiceHostFactory来为那个类创建一个&amp;lt;Service&amp;gt; 元素指示的ServiceHost。然后添加web.config中&amp;lt;service&amp;gt;部分定义的ServiceHost到终结点。最后，它 调用ServiceHost.Open以便于服务客气启动监听进入的请求。当服务启动时，它使用协议监听器来注册终结点地址以便于顺序请求直接从协议监听 器发送到服务本身。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;=======&lt;br /&gt;转载自&lt;br /&gt;作者：DanielWise&lt;br /&gt;出处：http://www.cnblogs.com/danielWise/&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2094185.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094185.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094181.html</id><title type="text">WCF 第七章 寄宿 在Windows 进程激活服务中寄宿服务</title><summary type="text">Windows进程激活服务(WAS)是Vista和Windows Server 2008 自带的寄宿基础。先前的特性只在IIS中才有，比如进程激活，回收和身份标识管理，已经加入到WAS中而且支持所有的协议除了HTTP。 WAS允许你在一个不依赖HTTP协议的鲁棒环境中寄宿服务。HTTP协议被广泛部署和理解，但是有一些情况它并不是最好的选择。 例如，想象有一个为跟踪和分析的目的而接受一条单向消息的服务，消息由客户端发送并最终从网络中断开。为了提供在断开网络时的消息发送能力，需要一个队列 结构。MSMQ协议将会完成这个，而HTTP协议将不会完成这个。或者，想象一个非常&amp;quot;不正式&amp;quot;</summary><published>2011-06-30T02:25:00Z</published><updated>2011-06-30T02:25:00Z</updated><author><name>Gavin Liu</name><uri>http://www.cnblogs.com/llbofchina/</uri></author><link rel="alternate" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094181.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094181.html"/><content type="html">&lt;div&gt;&lt;p&gt;Windows进程激活服务(WAS)是Vista和Windows Server 2008 自带的寄宿基础。先前的特性只在IIS中才有，比如进程激活，回收和身份标识管理，已经加入到WAS中而且支持所有的协议除了HTTP。&lt;/p&gt; &lt;p&gt;WAS允许你在一个不依赖HTTP协议的鲁棒环境中寄宿服务。HTTP协议被广泛部署和理解，但是有一些情况它并不是最好的选择。&lt;/p&gt; &lt;p&gt;例如，想象有一个为跟踪和分析的目的而接受一条单向消息的服务，消息由客户端发送并最终从网络中断开。为了提供在断开网络时的消息发送能力，需要一个队列 结构。MSMQ协议将会完成这个，而HTTP协议将不会完成这个。或者，想象一个非常"不正式"的服务，很快发送一条大消息转换的很多小消息。对这种情 况，TCP协议比HTTP协议高效因为它在发送多个消息时连接是保持连接的。在这两个例子中，WAS可以寄宿服务而IIS不能。&lt;/p&gt; &lt;p&gt;WAS通过监听器与具体进程管理功能抽象出去的一个监听器适配器架构来支持多种协议。通过在WAS和监听器之间定义一个接口，WAS可以不用引入额外的复 杂性到系统中就可以支持多个监听器。这种方式，WAS可以使用一种一致的方法使用HTTP,TCP,MSMQ和命名管道通信，因而改变了系统可信赖性。图 片7.1显示了WAS架构。&lt;/p&gt; &lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/157655/2010122612541813.jpg" alt="" /&gt;&lt;/p&gt; &lt;p&gt;当IIS被安装时WAS被自动安装到Vista和Windows Server  2008,因为IIS依赖于WAS。当IIS被安装时，它在WAS上将w3svc注册为一个HTTP监听适配器。当.NET 3.5  被安装时，它在WAS注册TCP,MSMQ和命名管道监听适配器。不安装IIS也可以使用WAS。为了做这个，你必须开启两个Windows特性。首先， 你必须向图片7.2显示的那样开启Windows进程激活管理服务。你在Windows中通过开始-&amp;gt;控制面板-&amp;gt;程序-&amp;gt;打开/关闭 Windows 特性可以得到下面的窗口。&lt;/p&gt; &lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/157655/2010122613151096.jpg" alt="" /&gt;&lt;/p&gt; &lt;p&gt;图片7.2 开启Windows进程激活管理服务&lt;/p&gt; &lt;p&gt;其次，在WAS开启了后，你必须像图片7.3显示的那样检查WCF非HTTP激活。如果你想为WCF服务开启HTTP激活，你必须开始WCF HTTP激活组件，HTTP激活组件在开启需要的IIS7特性时会被自动开启。&lt;/p&gt; &lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/157655/2010122613203632.jpg" alt="" /&gt;&lt;/p&gt; &lt;p&gt;图片7.3 开启WCF 非HTTP激活&lt;/p&gt; &lt;p&gt;在WAS中寄宿一个服务与在IIS中寄宿服务很类似，就如第一章描述的。你需要一个虚拟应用，一个SVC文件，在web.config文件 的&amp;lt;system.serviceModel&amp;gt;部分有/没有入口。为了开启除了HTTP的协议，你需要完成两个额外的步骤。&lt;/p&gt; &lt;p&gt;首先，在WAS配置文件中的相关Web  站点中添加协议绑定信息。例如，使用TCP你需要配置一个特殊的端口。net.tcp的默认绑定信息是808:*,  意味着端口号是808而监听器使用通配符结构来监听。然后你需要更新虚拟应用来开启相关的协议。这些设置都在%windir\System32 \inetsrv\config中的ApplicationHost.config文件中而且可以使用appcmd.exe实用工具来设 置，appcmd.exe可以在%windir\System32\inetsrv\中找到。列表7.2显示了可以做这两个改变的命令。虚拟应用的名字是 WASHosted在默认站点(Default Web Site)下定义。&lt;/p&gt; &lt;p&gt;列表7.2 为一个虚拟应用开启net.tcp&lt;/p&gt; &lt;p&gt;appcmd.exe set site "Default Web Site" +bindings.[protocol='net.tcp', bindingInformation='808:*']&lt;/p&gt; &lt;p&gt;appcmd.exe set app "Default Web Site/WASHosted" /enableProtocols:http, net.tcp&lt;/p&gt; &lt;p&gt;你可以添加一个协议，同样也可以移除一个协议。例如，如果如果你想为那个应用禁止HTTP协议，你可以从开启的协议列表中将HTTP协议移除，就如列表7.3显示的那样。&lt;/p&gt; &lt;p&gt;列表7.3 从一个虚拟应用禁止HTTP协议&lt;/p&gt; &lt;p&gt;appcmd.exe set app "Default Web Site/WASHosted" /enabledProtocols:net.tcp&lt;/p&gt; &lt;p&gt;其次，在web.config中开启任何WCF支持的传输绑定，包括TCP,MSMQ和命名管道。列表7.4显示了一个为TCP绑定配置的web.config文件。&lt;/p&gt; &lt;p&gt;列表7.4 WAS 宿主配置&lt;/p&gt;  &lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;?xml version=&lt;/code&gt;&lt;code&gt;"1.0"&lt;/code&gt; &lt;code&gt;encoding=&lt;/code&gt;&lt;code&gt;"utf-8"&lt;/code&gt; &lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;service name=&lt;/code&gt;&lt;code&gt;"EssentialWCF.StockService"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;endpoint address=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt; &lt;code&gt;binding=&lt;/code&gt;&lt;code&gt;"netTcpBinding"&lt;/code&gt; &lt;code&gt;contract=&lt;/code&gt;&lt;code&gt;"EssentialWCF.IStockService"&lt;/code&gt;&lt;code&gt;/&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/service&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt2=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/services&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div alt1=""&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;=======&lt;br /&gt;转载自&lt;br /&gt;作者：DanielWise&lt;br /&gt;出处：http://www.cnblogs.com/danielWise/&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/llbofchina/aggbug/2094181.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/llbofchina/archive/2011/06/30/2094181.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
