<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_牧野的Blog</title><subtitle type="text">为伊消得人憔悴，衣带渐宽终不悔</subtitle><id>http://feed.cnblogs.com/blog/u/26430/rss</id><updated>2011-06-13T14:16:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/26430/rss"/><entry><id>http://www.cnblogs.com/wzd24/archive/2011/06/13/2080120.html</id><title type="text">在ASP.NET MVC 中宿主WCF Rest 服务的问题及解决方法</title><summary type="text">好久没写博客，今天上来看看，都长草了，看来得打扫打扫了。最近在研究 ASP.NET MVC 3和WCF Reset Service，突然想看看把它们放在一起会怎么样。想到这里动手就干。下面就是我写的代码：public&amp;#160;class&amp;#160;MvcApplication&amp;#160;:&amp;#160;System.Web.HttpApplication { public&amp;#160;static&amp;#160;void&amp;#160;RegisterGlobalFilter...</summary><published>2011-06-13T14:16:00Z</published><updated>2011-06-13T14:16:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2011/06/13/2080120.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2011/06/13/2080120.html"/><content type="html">&lt;p&gt;好久没写博客，今天上来看看，都长草了，看来得打扫打扫了。&#xD;
&lt;/p&gt;&lt;p&gt;最近在研究 ASP.NET MVC 3和WCF Reset Service，突然想看看把它们放在一起会怎么样。想到这里动手就干。下面就是我写的代码：&#xD;
&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:blue; font-family:新宋体; font-size:10pt"&gt;public&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;class&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;MvcApplication&lt;span style="color:black"&gt; : System.Web.&lt;span style="color:#2b91af"&gt;HttpApplication&lt;span style="color:black"&gt;&#xD;
									&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;{&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;public&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;static&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;void&lt;span style="color:black"&gt; RegisterGlobalFilters(&lt;span style="color:#2b91af"&gt;GlobalFilterCollection&lt;span style="color:black"&gt; filters)&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        filters.Add(&lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;HandleErrorAttribute&lt;span style="color:black"&gt;());&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;public&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;static&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;void&lt;span style="color:black"&gt; RegisterRoutes(&lt;span style="color:#2b91af"&gt;RouteCollection&lt;span style="color:black"&gt; routes)&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        routes.IgnoreRoute(&lt;span style="color:#a31515"&gt;"{resource}.axd/{*pathInfo}"&lt;span style="color:black"&gt;);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        routes.MapRoute(&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:#a31515"&gt;"Default"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// Route name&lt;span style="color:black"&gt;&#xD;
						&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:#a31515"&gt;"{controller}/{action}/{id}"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// URL with parameters&lt;span style="color:black"&gt;&#xD;
						&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; { controller = &lt;span style="color:#a31515"&gt;"Home"&lt;span style="color:black"&gt;, action = &lt;span style="color:#a31515"&gt;"Index"&lt;span style="color:black"&gt;, id = &lt;span style="color:#2b91af"&gt;UrlParameter&lt;span style="color:black"&gt;.Optional }&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        );&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;protected&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;void&lt;span style="color:black"&gt; Application_Start()&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        &lt;span style="color:#2b91af"&gt;AreaRegistration&lt;span style="color:black"&gt;.RegisterAllAreas();&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        RegisterGlobalFilters(&lt;span style="color:#2b91af"&gt;GlobalFilters&lt;span style="color:black"&gt;.Filters);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;         &lt;span style="color:#2b91af"&gt;RouteTable&lt;span style="color:black"&gt;.Routes.Add(&lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;ServiceRoute&lt;span style="color:black"&gt;(&lt;span style="color:#a31515"&gt;"Uap"&lt;span style="color:black"&gt;, &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;WebServiceHostFactory&lt;span style="color:black"&gt;(), &lt;span style="color:blue"&gt;typeof&lt;span style="color:black"&gt;(Service.&lt;span style="color:#2b91af"&gt;UapService&lt;span style="color:black"&gt;)));&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;       RegisterRoutes(&lt;span style="color:#2b91af"&gt;RouteTable&lt;span style="color:black"&gt;.Routes);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;}&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;然后兴冲冲的按下了F5.嗯主页如愿出来了，输入Service的Url，也很正常。看来一切正常。兴奋中。随便点击了个连接。接着杯具出现了。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;a href="http://localhost:3315/Uap?action=About&amp;amp;controller=Home"&gt;&lt;span style="font-family:新宋体; font-size:10pt"&gt;http://localhost:3315/Uap?action=About&amp;amp;controller=Home&lt;/span&gt;&lt;/a&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt; 这……这……这是什么地址？我怎么没见过。囧啊。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;……&#xD;
&lt;/p&gt;&lt;p&gt;…………&#xD;
&lt;/p&gt;&lt;p&gt;想了半天也没搞清楚到底怎么回事。&#xD;
&lt;/p&gt;&lt;p&gt;检查代码也没法现问题。&#xD;
&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:blue; font-family:新宋体; font-size:10pt"&gt;&amp;lt;&lt;span style="color:maroon"&gt;ul&lt;span style="color:black"&gt; &lt;span style="color:red"&gt;id&lt;span style="color:blue"&gt;="menu"&amp;gt;&lt;span style="color:black"&gt;&#xD;
									&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;span style="color:maroon"&gt;li&lt;span style="color:blue"&gt;&amp;gt;&lt;span style="color:black"&gt;&lt;span style="background-color:yellow"&gt;@&lt;/span&gt;Html.ActionLink(&lt;span style="color:#a31515"&gt;"Home"&lt;span style="color:black"&gt;, &lt;span style="color:#a31515"&gt;"Index"&lt;span style="color:black"&gt;, &lt;span style="color:#a31515"&gt;"Home"&lt;span style="color:black"&gt;)&lt;span style="color:blue"&gt;&amp;lt;/&lt;span style="color:maroon"&gt;li&lt;span style="color:blue"&gt;&amp;gt;&lt;span style="color:black"&gt;&#xD;
																		&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;span style="color:maroon"&gt;li&lt;span style="color:blue"&gt;&amp;gt;&lt;span style="color:black"&gt;&lt;span style="background-color:yellow"&gt;@&lt;/span&gt;Html.ActionLink(&lt;span style="color:#a31515"&gt;"Application"&lt;span style="color:black"&gt;, &lt;span style="color:#a31515"&gt;"Index"&lt;span style="color:black"&gt;, &lt;span style="color:#a31515"&gt;"Application"&lt;span style="color:black"&gt;)&lt;span style="color:blue"&gt;&amp;lt;/&lt;span style="color:maroon"&gt;li&lt;span style="color:blue"&gt;&amp;gt;&lt;span style="color:black"&gt;&#xD;
																		&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;span style="color:maroon"&gt;li&lt;span style="color:blue"&gt;&amp;gt;&lt;span style="color:black"&gt;&lt;span style="background-color:yellow"&gt;@&lt;/span&gt;Html.ActionLink(&lt;span style="color:#a31515"&gt;"About"&lt;span style="color:black"&gt;, &lt;span style="color:#a31515"&gt;"About"&lt;span style="color:black"&gt;, &lt;span style="color:#a31515"&gt;"Home"&lt;span style="color:black"&gt;)&lt;span style="color:blue"&gt;&amp;lt;/&lt;span style="color:maroon"&gt;li&lt;span style="color:blue"&gt;&amp;gt;&lt;span style="color:black"&gt;&#xD;
																		&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:blue; font-family:新宋体; font-size:10pt"&gt;&amp;lt;/&lt;span style="color:maroon"&gt;ul&lt;span style="color:blue"&gt;&amp;gt;&lt;span style="color:black"&gt;&#xD;
							&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;我发誓，这些代码在加入WCF Rest Service之前是正常工作的。&#xD;
&lt;/p&gt;&lt;p&gt;看来是&#xD;
&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:#2b91af; font-family:新宋体; font-size:10pt"&gt;RouteTable&lt;span style="color:black"&gt;.Routes.Add(&lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;ServiceRoute&lt;span style="color:black"&gt;(&lt;span style="color:#a31515"&gt;"Uap"&lt;span style="color:black"&gt;, &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;WebServiceHostFactory&lt;span style="color:black"&gt;(), &lt;span style="color:blue"&gt;typeof&lt;span style="color:black"&gt;(Service.&lt;span style="color:#2b91af"&gt;UapService&lt;span style="color:black"&gt;)));&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;这行代码搞的鬼。&#xD;
&lt;/p&gt;&lt;p&gt;我把这行代码放在&#xD;
&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;RegisterRoutes(&lt;span style="color:#2b91af"&gt;RouteTable&lt;span style="color:black"&gt;.Routes);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;下面之后发现，连接的URL到是正常了，可WCF Rest Service又不能工作了。真是活见鬼了。&#xD;
&lt;/p&gt;&lt;p&gt;百思不得其果后干脆一不做二不休，下载了MVC的源代码。&#xD;
&lt;/p&gt;&lt;p&gt;在稀里哗啦的一阵F5加F11后，终于发现问题所在了。&#xD;
&lt;/p&gt;&lt;p&gt;原来&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;ActionLink方法在生成Url的时候会轮询所有的Route，要求符合条件的Route生成指定参数的Url并返回第一个生成值，结果蛋疼的&lt;span style="color:#2b91af"&gt;ServiceRoute&lt;span style="color:black"&gt;不知道是脑袋烧坏了还是怎么的。给我返回了/Uap?action=About&amp;amp;controller=Home这么个悲催的地址。ActionLink方法就原模原样的给输出到页面了（也不看看是不是上当了，真是个傻二哥）。&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;看来问题的症结已经找到了。现在该想办法解决了。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;最直接的方法就是修改MVC的源代码，不过在看了整个MVC项目的源代码后，我放弃了这个疯狂的想法。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;不过到是发现了一个方法，那就是把&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:#2b91af; font-family:新宋体; font-size:10pt"&gt;RouteTable&lt;span style="color:black"&gt;.Routes.Add(&lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;ServiceRoute&lt;span style="color:black"&gt;(&lt;span style="color:#a31515"&gt;"Uap"&lt;span style="color:black"&gt;, &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;WebServiceHostFactory&lt;span style="color:black"&gt;(), &lt;span style="color:blue"&gt;typeof&lt;span style="color:black"&gt;(Service.&lt;span style="color:#2b91af"&gt;UapService&lt;span style="color:black"&gt;)));&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;放在所有MVC的Route之后所有连接的Url就都正常了。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;可是这样WCF Rest Service的Route地址就会被&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;routes.MapRoute(&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:#a31515"&gt;"Default"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// Route name&lt;span style="color:black"&gt;&#xD;
						&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:#a31515"&gt;"{controller}/{action}/{id}"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// URL with parameters&lt;span style="color:black"&gt;&#xD;
						&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; { controller = &lt;span style="color:#a31515"&gt;"Home"&lt;span style="color:black"&gt;, action = &lt;span style="color:#a31515"&gt;"Index"&lt;span style="color:black"&gt;, id = &lt;span style="color:#2b91af"&gt;UrlParameter&lt;span style="color:black"&gt;.Optional }&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;拦截。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;头疼……&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;看来得想办法让MVC 的Route忽略&lt;span style="color:#2b91af"&gt;ServiceRoute&lt;span style="color:black"&gt;的Route地址。该怎么做呢。&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;忽略？对，忽略！&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;说做就做。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;routes.IgnoreRoute(&lt;span style="color:#a31515"&gt;"/Uap/{*pathInfo}"&lt;span style="color:black"&gt;);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;这下应该可以了吧？&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;按下F5，首页正常；链接Url正常；Wcf Service？不正常。靠……&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;仔细看看，靠……&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;头疼医脚，这个IgnoreRoute和MVC压根就没半毛钱关系。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;routes.IgnoreRoute(&lt;span style="color:#a31515"&gt;"/Uap/{*pathInfo}"&lt;span style="color:black"&gt;);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;干脆直接把Wcf Service给封杀了。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;看来这样还是不行，难道真的要去修改MVC的源代码吗？&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;我可不想这么做，再研究研究好了。我宁愿发半个小时的呆也不愿多写一行代码，动手毕竟没有动脑那么有成就感。（一个该被鄙视的懒鬼，发半个小时呆就为了想方设法少写一行代码。）&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;百无聊赖下翻起了MSDN，突然记起MapRoute方法有一个指定路由规则的参数，这个参数可以传递一个正则表达式来约束路由规则。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;看来我已经找到了解决问题的金钥匙了。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;于是写如下代码：&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt; routes.MapRoute(&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;     &lt;span style="color:#a31515"&gt;"Default"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// Route name&lt;span style="color:black"&gt;&#xD;
								&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;     &lt;span style="color:#a31515"&gt;"{controller}/{action}/{id}"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// URL with parameters&lt;span style="color:black"&gt;&#xD;
								&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;     &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; { controller = &lt;span style="color:#a31515"&gt;"Home"&lt;span style="color:black"&gt;, action = &lt;span style="color:#a31515"&gt;"Index"&lt;span style="color:black"&gt;, id = &lt;span style="color:#2b91af"&gt;UrlParameter&lt;span style="color:black"&gt;.Optional }, &lt;span style="color:green"&gt;// Parameter defaults&lt;span style="color:black"&gt;&#xD;
														&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;     &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; { controller = &lt;span style="color:#a31515"&gt;@"^\b(?!uap)\w*\b$"&lt;span style="color:black"&gt; }&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;规则很简单，忽略所有路径中有uap字符的路径。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;运行之后发现，一切正常，终于解决问题。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;贴上源代码：&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:blue; font-family:新宋体; font-size:10pt"&gt;public&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;class&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;MvcApplication&lt;span style="color:black"&gt; : System.Web.&lt;span style="color:#2b91af"&gt;HttpApplication&lt;span style="color:black"&gt;&#xD;
											&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;{&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;public&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;static&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;void&lt;span style="color:black"&gt; RegisterGlobalFilters(&lt;span style="color:#2b91af"&gt;GlobalFilterCollection&lt;span style="color:black"&gt; filters)&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    {&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        filters.Add(&lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;HandleErrorAttribute&lt;span style="color:black"&gt;());&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    }&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;public&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;static&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;void&lt;span style="color:black"&gt; RegisterRoutes(&lt;span style="color:#2b91af"&gt;RouteCollection&lt;span style="color:black"&gt; routes)&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    {&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        routes.IgnoreRoute(&lt;span style="color:#a31515"&gt;"{resource}.axd/{*pathInfo}"&lt;span style="color:black"&gt;);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        routes.MapRoute(&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:#a31515"&gt;"Default"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// Route name&lt;span style="color:black"&gt;&#xD;
								&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:#a31515"&gt;"{controller}/{action}/{id}"&lt;span style="color:black"&gt;, &lt;span style="color:green"&gt;// URL with parameters&lt;span style="color:black"&gt;&#xD;
								&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; { controller = &lt;span style="color:#a31515"&gt;"Home"&lt;span style="color:black"&gt;, action = &lt;span style="color:#a31515"&gt;"Index"&lt;span style="color:black"&gt;, id = &lt;span style="color:#2b91af"&gt;UrlParameter&lt;span style="color:black"&gt;.Optional }, &lt;span style="color:green"&gt;// Parameter defaults&lt;span style="color:black"&gt;&#xD;
														&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;            &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; { controller = &lt;span style="color:#a31515"&gt;@"^\b(?!uap)\w*\b$"&lt;span style="color:black"&gt; }&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        );&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    }&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;protected&lt;span style="color:black"&gt; &lt;span style="color:blue"&gt;void&lt;span style="color:black"&gt; Application_Start()&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    {&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        &lt;span style="color:#2b91af"&gt;AreaRegistration&lt;span style="color:black"&gt;.RegisterAllAreas();&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        RegisterGlobalFilters(&lt;span style="color:#2b91af"&gt;GlobalFilters&lt;span style="color:black"&gt;.Filters);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        RegisterRoutes(&lt;span style="color:#2b91af"&gt;RouteTable&lt;span style="color:black"&gt;.Routes);&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;        &lt;span style="color:#2b91af"&gt;RouteTable&lt;span style="color:black"&gt;.Routes.Add(&lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;ServiceRoute&lt;span style="color:black"&gt;(&lt;span style="color:#a31515"&gt;"Uap"&lt;span style="color:black"&gt;, &lt;span style="color:blue"&gt;new&lt;span style="color:black"&gt; &lt;span style="color:#2b91af"&gt;WebServiceHostFactory&lt;span style="color:black"&gt;(), &lt;span style="color:blue"&gt;typeof&lt;span style="color:black"&gt;(Service.&lt;span style="color:#2b91af"&gt;UapService&lt;span style="color:black"&gt;)));&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;    }&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p style="background: white"&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;}&#xD;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;收工，睡觉。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:新宋体; font-size:10pt"&gt;迷糊中……猛然惊醒，靠……忘了洗澡！！！！！&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wzd24/aggbug/2080120.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wzd24/archive/2011/06/13/2080120.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2010/09/22/1833166.html</id><title type="text">中秋夜忆故乡</title><summary type="text">又是一年中秋时，他乡异客倍思亲。独坐窗前空对月，嫦娥可曾寄我情？　　　　庚寅年中秋夜于北京</summary><published>2010-09-22T13:54:00Z</published><updated>2010-09-22T13:54:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2010/09/22/1833166.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2010/09/22/1833166.html"/><content type="html">&lt;div style="font-size: 14px" id="blogDetailDiv"&gt;&#xD;
&lt;p&gt;又是一年中秋时，&lt;/p&gt;&#xD;
&lt;p&gt;他乡异客倍思亲。&lt;/p&gt;&#xD;
&lt;p&gt;独坐窗前空对月，&lt;/p&gt;&#xD;
&lt;p&gt;嫦娥可曾寄我情？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font color="#000000"&gt;庚寅年中秋夜于北京&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/wzd24/aggbug/1833166.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wzd24/archive/2010/09/22/1833166.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2009/10/23/1588930.html</id><title type="text">参加厦门.NET活动</title><summary type="text">明天要参加厦门.NET俱乐部的活动了，3W竟然让我去讲Win7新特性开发的Session。 我只好勉为其难了，不过明天还是要从他身上榨点油水出来，嘿嘿…… 这次的活动主题是：让社区激情随Win7一同绽放。主要讲Windows 7 的开发。 在厦门的王子酒店，在厦门的朋友可以去参加哦。 具体的可以访问我们的网站：http://www.xmaspx.com/Event.aspx/ShowEvent?e...</summary><published>2009-10-23T15:21:00Z</published><updated>2009-10-23T15:21:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2009/10/23/1588930.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2009/10/23/1588930.html"/></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2009/03/16/1413301.html</id><title type="text">浅析C#编程中的内存管理</title><summary type="text">C#编程的一个优点是程序员不需要关心具体的内存管理，尤其是垃圾收集器会处理所有的内存清理工作。虽然不必手工管理内存，但如果要编写高质量的代码，还是要理解后台发生的事情，理解C#的内存管理。本文主要介绍给变量分配内存时计算机内存中发生的情况。</summary><published>2009-03-16T07:39:00Z</published><updated>2009-03-16T07:39:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2009/03/16/1413301.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2009/03/16/1413301.html"/></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2009/03/09/1407326.html</id><title type="text"> Socket I/O模型全接触</title><summary type="text">本文简单介绍了当前Windows支持的各种Socket I/O模型，如果你发现其中存在什么错误请务必赐教。    一：select模型    二：WSAAsyncSelect模型    三：WSAEventSelect模型    四：Overlapped I/O 事件通知模型    五：Overlapped I/O 完成例程模型    六：IOCP模型</summary><published>2009-03-09T14:01:00Z</published><updated>2009-03-09T14:01:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2009/03/09/1407326.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2009/03/09/1407326.html"/></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2009/03/09/1407248.html</id><title type="text">.net 3.5平台上的Socket开发</title><summary type="text">在之前的文章中，我们讲了如何在.NET 2.0下面开发Socket项目。其中的异步Socket让我们得以很轻松的在.NET中开发高性能服务端应用。但是，在实际应用中我们还是发现了一些问题的存在，如：我们在每一次操作的过程中都要创建一个IAsyncResult上下文对象，如果数据通讯很频繁的话，会导致大量的IAsyncResult对象被创建，大大的增加了垃圾回收器的工作量，从而降低了整个应用的效率。在.NET 3.5中，这个麻烦已经被解决了，在3.5 版本中，Socket定义了一些新的方法。这些方法不要求每一次操作都创建一个新的上下文对象。 </summary><published>2009-03-09T11:34:00Z</published><updated>2009-03-09T11:34:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2009/03/09/1407248.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2009/03/09/1407248.html"/></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2007/12/24/1011932.html</id><title type="text">Socket开发之通讯协议及处理</title><summary type="text">在Socket应用开发中，还有一个话题是讨论的比较多的，那就是数据接收后如何处理的问题。这也是一个令刚接触Socket开发的人很头疼的问题。 &#xD;因为Socket的TCP通讯中有一个“粘包”的现象，既：大多数时候发送端多次发送的小数据包会被连在一起被接收端同时接收到，多个小包被组成一个大包被接收。有时候一个大数据包又会被拆成多个小数据包发送。这样就存在一个将数据包拆分和重新组合的问题。那么如何去处理这个问题呢？这就是我今天要讲的通讯协议。&#xD;&#xD;所谓的协议就是通讯双方协商并制定好要传送的数据的结构与格式。并按制定好的格式去组合与分析数据。从而使数据得以被准确的理解和处理。</summary><published>2007-12-23T16:34:00Z</published><updated>2007-12-23T16:34:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2007/12/24/1011932.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2007/12/24/1011932.html"/></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2007/06/13/782833.html</id><title type="text">.NET Socket开发之异步Socket</title><summary type="text">在基于.NET的网络服务端的开发中，我们用到和听到的最多的恐怕就是异步Socket了。异步Socket的性能比同步高出很多，但是编写代码比较复杂。因此异步Socket也是网络上讨论比较多的话题。&#xD;&#xD;今天，我们就来讨论一下如何用异步Socket开发网络应用。</summary><published>2007-06-13T15:59:00Z</published><updated>2007-06-13T15:59:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2007/06/13/782833.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2007/06/13/782833.html"/></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2007/05/22/755050.html</id><title type="text">在C#中利用Keep-Alive处理Socket网络异常断开的方法 </title><summary type="text">　　最近我负责一个IM项目的开发，服务端和客户端采用TCP协议连接。服务端采用C#开发，客户端采用Delphi开发。在服务端开发中我碰到了各种各样的网络异常断开现象。在处理这些异常的时候有了一些心得，现在写出来和大家分享一下。</summary><published>2007-05-22T00:33:00Z</published><updated>2007-05-22T00:33:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2007/05/22/755050.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2007/05/22/755050.html"/></entry><entry><id>http://www.cnblogs.com/wzd24/archive/2007/05/22/755016.html</id><title type="text">在C#中实现Socket端口复用 </title><summary type="text">一、什么是端口复用： &#xD;　　因为在winsock的实现中，对于服务器的绑定是可以多重绑定的，在确定多重绑定使用谁的时候，根据一条原则是谁的指定最明确则将包递交给谁，而且没有权限之分。这种多重绑定便称之为端口复用。</summary><published>2007-05-22T00:19:00Z</published><updated>2007-05-22T00:19:00Z</updated><author><name>牧野</name><uri>http://www.cnblogs.com/wzd24/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wzd24/archive/2007/05/22/755016.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wzd24/archive/2007/05/22/755016.html"/></entry></feed>
