﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-喵本聪</title><link>http://www.blogjava.net/crazycoding/</link><description>God helps those who help themselves. </description><language>zh-cn</language><lastBuildDate>Fri, 01 May 2026 11:40:47 GMT</lastBuildDate><pubDate>Fri, 01 May 2026 11:40:47 GMT</pubDate><ttl>60</ttl><item><title>.net IdentityServer4 + Ws-Federation 身份认证之路</title><link>http://www.blogjava.net/crazycoding/archive/2019/09/30/434713.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Mon, 30 Sep 2019 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2019/09/30/434713.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/434713.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2019/09/30/434713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/434713.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/434713.html</trackback:ping><description><![CDATA[<h2><strong>身份验证策略</strong></h2><div>・<span style="font-family: &quot;Comic Sans MS&quot;;">Form</span>　提供一个输入凭据的自定义窗体(Web 页)，然后在应用程序中验证他们的身份。（用户凭据标记存储在 Cookie 中）</div><div>・<span style="font-family: &quot;Comic Sans MS&quot;;">Windows</span>　IIS根据应用程序的设置执行身份验证（默认）</div><div>・<span style="font-family: &quot;Comic Sans MS&quot;;">Passport</span>　通过 Microsoft 的集中身份验证服务执行验证，为成员站点（Client）提供单独登录和核心配置文件服务</div><div>・<span style="font-family: &quot;Comic Sans MS&quot;;">None</span>　不执行身份验证<br /></div><div></div><h2><strong>认证授权协议</strong></h2><div><span style="font-family: &quot;Comic Sans MS&quot;;">・OAuth2 (https://oauth.net/2/)</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・OIDC(New) (Identity, Authentication) + OAuth 2.0 = OpenID Connect &#8658; OIDC (https://openid.net/specs/openid-connect-core-1_0.html)</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・SAML2(https://www.oasis-open.org/committees/download.php/11511/sstc-saml-tech-overview-2.0-draft-03.pdf)</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・WS-Federation(http://docs.oasis-open.org/wsfed/federation/v1.2/os/ws-federation-1.2-spec-os.html)</span><br /></div><div></div><h2><strong>认证与授权</strong></h2><div><span style="font-family: &quot;Comic Sans MS&quot;;">（Authentication VS. Authorization）</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">&#8658;OAuth2 VS. OIDC、SAML2、WS-Federation</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">&#9733;AuthN &#8594; Authentication：What you can do</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">&#9733;AuthZ &#8594; Authorization：Who are you</span><br /></div><div></div><h2>IdentityServer介绍</h2><div>（https://github.com/IdentityServer）</div><div></div><div><strong>Identity Server4</strong></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・free</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・open source</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・OpenID Connect and OAuth 2.0&nbsp;</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・ASP.NET Core.</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・ASP.NET Framework 4.6.x</span><br /></div><div></div><div><strong>IdentityServer4.WsFederation</strong></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・free</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・open source</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・SAML 1.1/2.0 token</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・ASP.NET Framework</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・ASP.NET Core</span><br /></div><div></div><h2><strong>借助IdentityServer4搭建.net认证服务器&nbsp;</strong></h2><div><span style="font-family: &quot;Comic Sans MS&quot;;">・.net core 2.1 (Server)</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・.net framework 4.x(Client)</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・.net core 2.1(Client)</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・IdentityServer4</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・Ws-Federation（为了使.net framework 4.x的客户端也能通过验证）</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・Owin</span></div><div><span style="font-family: &quot;Comic Sans MS&quot;;">・IIS 10<br /><br /></span></div><div></div><h4>Server = .net core2.1 + IdentityServer4 + WsFederation<br />Client = .net Framework 4.5.x + Owin + WsFederation</h4><div></div><div></div><h4><strong>Server</strong></h4><div>1. .net core项目作成（Web Application ASP.NET Core2.1）<br /><div><div style="display: inline-block;">2.&nbsp;</div>launchSettings.json<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;"iisSettings":&nbsp;{<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"windowsAuthentication":&nbsp;false,<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"anonymousAuthentication":&nbsp;true,<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"iisExpress":&nbsp;{<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"applicationUrl":&nbsp;"http://localhost:5000/",<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"sslPort":&nbsp;0<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;},<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;"profiles":&nbsp;{<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"IIS&nbsp;Express":&nbsp;{<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"commandName":&nbsp;"IISExpress",<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"environmentVariables":&nbsp;{<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ASPNETCORE_ENVIRONMENT":&nbsp;"Development"<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"IdentityServer4.WsFederation":&nbsp;{<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"commandName":&nbsp;"Project",<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"launchUrl":&nbsp;"http://localhost:5000",<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"environmentVariables":&nbsp;{<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ASPNETCORE_ENVIRONMENT":&nbsp;"Development"<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">25</span>&nbsp;}</div><div>3.NuGet install IdentityServer4 (version 2.0.4)</div><div>4.System.IdentityModel、System.IdentityModel.Service参照</div><div>5.Add Config.cs</div><div>6.Copy DemoのQuickstart、Views、WsFederation、idsrvtest.pfx floder into Project</div><div>7.Startup.csの変更</div><div>8.起動<br />（未完待续）</div><br /><br /><br /></div></div><img src ="http://www.blogjava.net/crazycoding/aggbug/434713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2019-09-30 10:32 <a href="http://www.blogjava.net/crazycoding/archive/2019/09/30/434713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python 新手上路（基础篇）</title><link>http://www.blogjava.net/crazycoding/archive/2018/06/03/433250.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sun, 03 Jun 2018 11:24:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2018/06/03/433250.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/433250.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2018/06/03/433250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/433250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/433250.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、概述简史1989：Guido van Rossum2008：python3.0 诞生2014：宣布2.7支持到20202017：AI元年，Python崛起环境anaconda + pycharmPython3.6二、变量类型数字类型 Number字符串类型 str列表 list元组 tuple字典 Dictionary集合 set数字类型 Number数字类型没有大小限制整数浮点数复数 com...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycoding/archive/2018/06/03/433250.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycoding/aggbug/433250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2018-06-03 19:24 <a href="http://www.blogjava.net/crazycoding/archive/2018/06/03/433250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 multiselect 多项选择</title><link>http://www.blogjava.net/crazycoding/archive/2018/05/24/433233.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Thu, 24 May 2018 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2018/05/24/433233.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/433233.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2018/05/24/433233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/433233.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/433233.html</trackback:ping><description><![CDATA[<div><a href="https://github.com/davidstutz/bootstrap-multiselect" title="https://github.com/davidstutz/bootstrap-multiselect">https://github.com/davidstutz/bootstrap-multiselect<br />
</a><br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->"~/Content/bootstrap-multiselect.css"<br />
"~/Scripts/bootstrap-multiselect.js",</div>
<br />
<div>SelectList作成</div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">foreach</span>&nbsp;(MemberModel&nbsp;m&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;ls)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectListItem&nbsp;item&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SelectListItem()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Value&nbsp;=&nbsp;m.LoginUserId,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Text&nbsp;&nbsp;=&nbsp;m.UserName,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lsMember.Add(item);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div>
</div>
<br />
ViewBag保存<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->ViewBag.AllChkMember&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;bizTown.GetChkMembers();</div>
<br />初始化<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
<br />
-->$('#editMembers,#editCustomerMembers').multiselect({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;======&nbsp;日本語化&nbsp;======&nbsp;start&nbsp;======</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectAllText&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;'すべて'&nbsp;&nbsp;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filterPlaceholder:&nbsp;'検索'&nbsp;&nbsp;&nbsp;&nbsp;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nonSelectedText&nbsp;&nbsp;:&nbsp;'未選択'&nbsp;&nbsp;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nSelectedText&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;'#&nbsp;個選択',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allSelectedText&nbsp;&nbsp;:&nbsp;'全選択'&nbsp;&nbsp;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;======&nbsp;日本語化&nbsp;======&nbsp;&nbsp;end&nbsp;&nbsp;======</span><span style="color: #008000; "><br />
</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;氏名の表示数設定</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberDisplayed:&nbsp;5,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Group表示</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableCollapsibleOptGroups:&nbsp;<span style="color: #0000FF; ">true</span>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Group初期Close状態に設定</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collapseOptGroupsByDefault:&nbsp;<span style="color: #0000FF; ">true</span>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;検索機能Open</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableFiltering:&nbsp;<span style="color: #0000FF; ">true</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;});</div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #800000; ">&lt;style&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;.ui-multiselect&nbsp;</span>{<span style="color: #FF0000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line-height</span>:<span style="color: #0000FF; ">&nbsp;30px</span>;<span style="color: #FF0000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min-width</span>:<span style="color: #0000FF; ">&nbsp;200px</span>;<span style="color: #FF0000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span>}<span style="color: #800000; "><br />
&lt;/style&gt;</span></div>引用<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@Html.ListBoxFor(model&nbsp;=&gt;&nbsp;model.SecChkArr,&nbsp;ViewBag.AllChkMember&nbsp;as&nbsp;IEnumerable<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">SelectListItem</span><span style="color: #0000FF; ">&gt;</span>,&nbsp;new&nbsp;{&nbsp;@id&nbsp;=&nbsp;"editMembers",&nbsp;@class&nbsp;=&nbsp;"multiselect&nbsp;form-control",&nbsp;multiple&nbsp;=&nbsp;"multiple"&nbsp;})</div>注：SecChkArr是数组<img src ="http://www.blogjava.net/crazycoding/aggbug/433233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2018-05-24 15:36 <a href="http://www.blogjava.net/crazycoding/archive/2018/05/24/433233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实时通讯？消息推送？SignalR 之 一二三四</title><link>http://www.blogjava.net/crazycoding/archive/2018/05/23/433232.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 23 May 2018 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2018/05/23/433232.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/433232.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2018/05/23/433232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/433232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/433232.html</trackback:ping><description><![CDATA[<strong style="font-family: Verdana; font-size: 10pt;">一、SignalR&nbsp;概述</strong><div style="font-family: Verdana; font-size: 10pt;"><div><a href="https://docs.microsoft.com/en-us/aspnet/signalr/index" title="https://docs.microsoft.com/en-us/aspnet/signalr/index"><div>https://docs.microsoft.com/en-us/aspnet/signalr/index</div></a></div></div><span style="color: #4f4f4f; font-family: Verdana; font-size: 10pt; text-align: justify; background-color: #ffffff;">SignalR是微软为实现实时通信的一个类库。一般情况下，signalR会使用JavaScript的长轮询(long polling)的方式来实现客户端和服务器通信，随着Html5中WebSockets出现，SignalR也支持WebSockets通信。另外SignalR开发的程序不仅仅限制于宿主在IIS中，也可以宿主在任何应用程序，包括控制台，客户端程序和Windows服务等，另外还支持Mono，这意味着它可以实现跨平台部署在Linux环境下。<br /><br /></span><span style="font-family: Verdana; font-size: 10pt;">&nbsp; &nbsp;&nbsp;</span><span style="color: #4f4f4f; font-family: Verdana; font-size: 10pt; text-align: justify; background-color: #ffffff;">signalR内部有两类对象：<br /></span><ol style="box-sizing: border-box; outline: 0px; padding: 0px 0px 0px 40px; margin: 0px; list-style: none; word-break: break-all; color: #333333; background-color: #ffffff; font-family: Verdana; line-height: 18px; font-size: 10pt;"><li style="box-sizing: border-box; outline: 0px; padding: 0px; margin: 0px 0px 1em; list-style: decimal; word-break: break-all;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;">持久连接<br /></span></span><div>一个持久连接代表了一个端点，它可以发送单一接收者，Group接受者或者广播信息。持久连接的api是SignalR提供给开发者进入低级别协议的api。连接模型使用起来和WCF比较类似。</div><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;"></span></li><li style="box-sizing: border-box; outline: 0px; padding: 0px; margin: 0px 0px 1em; list-style: decimal; word-break: break-all;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;">Hubs（集线器）<br /></span></span><div>Hubs是SignalR提供的高级别的api，它允许客户端和服务端，在自己这边相互调用对方的方法。Hubs模型类似于.Net Remoting。使用Hubs也可以让你传递强类型参数，进行模型绑定。</div><span style="box-sizing: border-box; outline: 0px; word-break: break-all; font-size: 12px;"></span></li></ol><span style="color: #4f4f4f; font-family: Verdana; font-size: 10pt; text-align: justify; background-color: #ffffff;">SignalR将整个信息的交换封装起来，客户端和服务器都是使用JSON来沟通的，在服务端声明的所有Hub信息，都会生成JavaScript输出到客户端，.NET则依赖Proxy来生成代理对象，而Proxy的内部则是将JSON转换成对象。<br /><img src="http://www.blogjava.net/images/blogjava_net/crazycoding/sr.png" width="596" height="558" alt="" /><br /></span><br style="font-family: Verdana; font-size: 10pt;" /><span style="font-size: 10pt; background-color: #ffffff; color: #333333; font-family: Verdana;"><br /></span><strong style="font-family: Verdana; font-size: 13.3333px;">SignalR 和 WebSocket</strong><br style="font-family: Verdana; font-size: 13.3333px;" /><div style="font-family: Verdana; font-size: 13.3333px;"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: #ffffff;">如果客户端和服务器都支持WebSocket，那么SignalR会通过WebSocket来传输数据。当然你也可以自己使用WebSocket来实现SignalR的功能，不过使用SignalR你就不用考虑如果客户端或者服务器不支持WebSocket的问题了。</span></div><div style="font-family: Verdana; font-size: 13.3333px;"></div><br /><strong>二、SignalR的协议选择</strong><br /><div>SignalR是可以在客户端和服务器端进行即时通讯的几种协议的抽象和实现。一个SignalR连接是通过http请求发起的，然后上升为WebSocket（如果客户端和服务端都支持）。WebSocket是SignalR最理想的协议，它可以有效地利用服务器端的内存，有着最低的延迟，最多的基础特性（比如客户端和服务端的全双工连接），不过它也有着严格的要求，需要服务器端使用Windows Server 2012或者Windows 8以上的系统，也需要.NET Framework 4.5.。如果不符合这些要求，那么SignalR会使用其他的协议来建立连接。<br /><br /><div><strong>HTML 5协议</strong></div><div>・WebSocket。如果服务器和客户端都支持，那么就使用WebSocket协议来进行通讯。</div><div>・服务器推送事件（Server-sent Events）。除了IE，其他的浏览器基本都支持。</div><div><strong>Comet协议</strong></div><div>・Forever Frame （只支持IE）。</div><div>・Ajax长轮询（Ajax long polling）。</div><div><strong>SignalR协议选择过程</strong></div><div>1.如果浏览器是IE8或者更早的版本，使用长轮询。</div><div>2.如果配置了Jsonp（如果连接开始的时候jsonp的参数设置为true）, 使用长轮询。</div><div>3.如果是跨域连接, 如果下面的条件符合就会使用WebSocket，如果有条件不符合，那就是用长轮询。</div><div>&nbsp; &nbsp; ・客户端支持跨域连接</div><div>&nbsp; &nbsp; ・客户端支持WebSocket</div><div>&nbsp; &nbsp; ・服务器端支持WebSocket</div><div>4.如果没有配置jsonp，而且不是跨域连接，如果客户端和服务端都支持WebSocket，那么就使用WebSocket。</div><div>5.如果客户端或者服务端不支持WebSocket，使用服务器推送事件。</div><div>6.如果不支持服务器推送事件，使用Forever Frame。</div><div>7.如果不支持Forever Frame，使用长轮询。</div><br /><div><strong>监控协议</strong><br /><div>可以通过在你的Hub上开启logging来监控你的SignalR使用了什么协议。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$.connection.hub.logging&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span>;</div></div></div><br /><div><strong>指定协议</strong><br /><div>SignalR判断协议也需要消耗一定的客户端、服务端资源，如果你清楚客户端、服务端支持的协议，那么你可以指定使用某种协议来建立连接。</div><div>比如，你知道客户端只支持长轮询，那么你可以指定使用长轮询来进行通讯。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->connection.start({&nbsp;transport:&nbsp;'longPolling'&nbsp;});</div></div></div><br /><div>你也可以指定一个序列，客户端会按照序列里的顺序来进行通讯。下面的代码的作用是，先使用WebSocket，如果失败了，就使用长轮询。</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->connection.start({&nbsp;transport:&nbsp;['webSockets','longPolling']&nbsp;});</div></div><div><br /><div><strong>SignalR包含下面四种指定的协议常量<br /></strong>&nbsp; &nbsp; ・webSockets<br />&nbsp; &nbsp; ・foreverFrame<br />&nbsp; &nbsp; ・serverSentEvents<br />&nbsp; &nbsp; ・longPolling</div></div><strong>三、SignalR的三种实现方式</strong><br />1. 集线器类（Hub） + 非自动生成代理模式<br /><div>服务端与客户端分别定义的相对应的方法，客户端通过代理对象调用服务端的方法，服务端通过IHubConnectionContext回调客户端的方法，客户端通过回调方法接收结果。<br /><div>JS端调用服务端方法采用：chat.invoke，而被服务端回调的方法则采用：chat.on （这里的chat是createHubProxy创建得来的）</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var</span>&nbsp;conn&nbsp;=&nbsp;$.hubConnection();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.qs&nbsp;=&nbsp;{&nbsp;"clientName":&nbsp;clientName&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.start().done(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#btnSend").click(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;toUserId&nbsp;=&nbsp;eUsers.val();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(toUserId&nbsp;!=&nbsp;"")&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chat.invoke("sendOne",&nbsp;toUserId,&nbsp;$("#message").val())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.done(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">alert("发送成功！");</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#message").val("").focus();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.fail(<span style="color: #0000FF; ">function</span>&nbsp;(e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(e);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#message").focus();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chat.invoke("send",&nbsp;$("#message").val())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.done(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">alert("发送成功！");</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#message").val("").focus();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.fail(<span style="color: #0000FF; ">function</span>&nbsp;(e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(e);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#message").focus();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;chat&nbsp;=&nbsp;conn.createHubProxy("chat");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chat.on("receiveMessage",&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;(dt,&nbsp;cn,&nbsp;msg)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;clsName&nbsp;=&nbsp;"linfo";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(cn&nbsp;==&nbsp;clientName&nbsp;||&nbsp;cn.indexOf("您对")&nbsp;&gt;=&nbsp;0)&nbsp;clsName&nbsp;=&nbsp;"rinfo";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eChatBox.append("&lt;p&nbsp;class='"&nbsp;+&nbsp;clsName&nbsp;+&nbsp;"'&gt;"&nbsp;+&nbsp;dt&nbsp;+&nbsp;"&nbsp;&lt;strong&gt;"&nbsp;+&nbsp;cn&nbsp;+&nbsp;"&lt;/strong&gt;&nbsp;说：&lt;br/&gt;"&nbsp;+&nbsp;msg&nbsp;+&nbsp;"&lt;/p&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eChatBox.scrollTop(eChatBox[0].scrollHeight);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chat.on("userChange",&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;(dt,&nbsp;msg,&nbsp;users)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eChatBox.append("&lt;p&gt;"&nbsp;+&nbsp;dt&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;msg&nbsp;+&nbsp;"&lt;/p&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eUsers.find("option[value!='']").remove();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">var</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;users.length;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(users[i].Value&nbsp;==&nbsp;clientName)&nbsp;<span style="color: #0000FF; ">continue</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eUsers.append("&lt;option&nbsp;value='"&nbsp;+&nbsp;users[i].Key&nbsp;+&nbsp;"'&gt;"&nbsp;+&nbsp;users[i].Value&nbsp;+&nbsp;"&lt;/option&gt;")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</div><br />2. 集线器类（Hub）+ 自动生成代理模式<br />需要js引用<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">src</span><span style="color: #0000FF; ">="~/signalr/hubs"</span><span style="color: #FF0000; ">&nbsp;type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span></div><div>然而，我们在写代码的时候上面的引用并不存在，而当运行后就会自动生成上述signalr的代理脚本<br />这就是与非自动生成代理脚本最根本的区别，也正是因为这个自动生成的脚本，我们可以在JS中更加方便的调用服务端方法及定义回调方法，调用服务端方法采用：chat.server.XXX，而被服务端回调的客户端方法则采用：chat.client.XXX</div><br />3.持久化连接类（PersistentConnection）<br />・<span style="color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; background-color: #ffffff;">Startup.Configuration中是需要指定app.MapSignalR&lt;MyConnection&gt;("/MyConnection")<br /></span>・<span style="color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; background-color: #ffffff;">需实现继承自PersistentConnection类的自定义的持久化连接类，在这个连接中可以重写：OnConnected、OnDisconnected、OnReceived、OnReconnected、ProcessRequest方法，同时有几个重要的属性成员Connection、Groups，服务端发消息给客户端采用：Connection.Broadcast（广播，所有客户端都可以收到消息）,Connection.Send（发送给指定的客户端）<br /><br /></span>具体实现参考<br /><div><a href="https://www.cnblogs.com/zuowj/p/5674615.html" title="https://www.cnblogs.com/zuowj/p/5674615.html">https://www.cnblogs.com/zuowj/p/5674615.html</a></div><br /><strong>四、使用RignalR实现新消息推送（</strong>集线器类（Hub）+ 自动生成代理模式<strong>）</strong></div>1.app.MapSignalR();<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">using</span>&nbsp;System.Data.Entity;<br /><span style="color: #0000FF; ">using</span>&nbsp;Microsoft.Owin;<br /><span style="color: #0000FF; ">using</span>&nbsp;Owin;<br /><span style="color: #0000FF; ">using</span>&nbsp;RCRS.WebApp.Town.Migrations;<br /><span style="color: #0000FF; ">using</span>&nbsp;RCRS.WebApp.Town.Models.DomainEntity;<br /><br />[assembly:&nbsp;OwinStartupAttribute(<span style="color: #0000FF; ">typeof</span>(RCRS.WebApp.Town.Startup))]<br /><span style="color: #0000FF; ">namespace</span>&nbsp;RCRS.WebApp.Town<br />{<span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;partial&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Startup<br />&nbsp;&nbsp;&nbsp;&nbsp;{<span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Configuration(IAppBuilder&nbsp;app)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConfigureAuth(app);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app.MapSignalR();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Database.SetInitializer(<span style="color: #0000FF; ">new</span>&nbsp;MigrateDatabaseToLatestVersion&lt;TownContext,&nbsp;TownConfiguration&gt;());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br />2. NotificationHub<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">using</span>&nbsp;System.Linq;<br /><span style="color: #0000FF; ">using</span>&nbsp;Microsoft.AspNet.SignalR;<br /><span style="color: #0000FF; ">using</span>&nbsp;Microsoft.AspNet.SignalR.Hubs;<br /><span style="color: #0000FF; ">using</span>&nbsp;RCRS.WebApp.Town.Models.Town;<br /><br /><span style="color: #0000FF; ">namespace</span>&nbsp;RCRS.WebApp.Town.Hubs<br />{<span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;[HubName("NotificationHub")]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;NotificationHub&nbsp;:&nbsp;Hub<br />&nbsp;&nbsp;&nbsp;&nbsp;{<span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Connect(<span style="color: #0000FF; ">string</span>&nbsp;userId)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;id&nbsp;=&nbsp;Context.ConnectionId;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(BizHub.ConnectedUsers.Count(x&nbsp;=&gt;&nbsp;x.ConnectionId&nbsp;==&nbsp;id)&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BizHub.ConnectedUsers.Add(<span style="color: #0000FF; ">new</span>&nbsp;HubUser&nbsp;{&nbsp;ConnectionId&nbsp;=&nbsp;id,&nbsp;UserId&nbsp;=&nbsp;userId&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;send&nbsp;to&nbsp;caller</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients.Caller.onConnected(id,&nbsp;userId,&nbsp;BizHub.ConnectedUsers);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;send&nbsp;to&nbsp;all&nbsp;except&nbsp;caller&nbsp;client</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients.AllExcept(id).onNewUserConnected(id,&nbsp;userId);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008000; "></span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">override</span>&nbsp;System.Threading.Tasks.Task&nbsp;OnDisconnected(<span style="color: #0000FF; ">bool</span>&nbsp;stopCalled)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;item&nbsp;=&nbsp;BizHub.ConnectedUsers.FirstOrDefault(x&nbsp;=&gt;&nbsp;x.ConnectionId&nbsp;==&nbsp;Context.ConnectionId);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(item&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BizHub.ConnectedUsers.Remove(item);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;id&nbsp;=&nbsp;Context.ConnectionId;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients.All.onUserDisconnected(id,&nbsp;item.UserId);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">base</span>.OnDisconnected(stopCalled);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br />3.BizHub<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #808080; ">&nbsp; &nbsp; &nbsp; &nbsp; ///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;summary&gt;</span><span style="color: #008000; ">&nbsp;&nbsp;</span><span style="color: #808080; ">&lt;/summary&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;List&lt;HubUser&gt;&nbsp;ConnectedUsers&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List&lt;HubUser&gt;();<br /><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;NotifyAll(<span style="color: #0000FF; ">string</span>&nbsp;msg)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;hub&nbsp;=&nbsp;GlobalHost.ConnectionManager.GetHubContext&lt;NotificationHub&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hub.Clients.All.broadcaastNotif(msg);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008000; "></span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;NotifyPrivate(<span style="color: #0000FF; ">string</span>&nbsp;toUserId,&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;msg)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;toUser&nbsp;=&nbsp;ConnectedUsers.FirstOrDefault(x&nbsp;=&gt;&nbsp;x.UserId&nbsp;==&nbsp;toUserId);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;hub&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;GlobalHost.ConnectionManager.GetHubContext&lt;NotificationHub&gt;();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(toUser&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;send&nbsp;to&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hub.Clients.Client(toUser.ConnectionId).broadcaastNotif(msg);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;NotifyRole(List&lt;<span style="color: #0000FF; ">string</span>&gt;&nbsp;roleLs,&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;msg)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;<span style="color: #0000FF; ">string</span>&gt;&nbsp;lsUserIds&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;List&lt;<span style="color: #0000FF; ">string</span>&gt;();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;(ApplicationDbContext&nbsp;context&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ApplicationDbContext())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;cmd&nbsp;=&nbsp;getUsersByRoleLs(roleLs);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lsUserIds&nbsp;=&nbsp;context.Database.SqlQuery&lt;<span style="color: #0000FF; ">string</span>&gt;(cmd).ToListAsync().Result;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">foreach</span>&nbsp;(<span style="color: #0000FF; ">string</span>&nbsp;toUserId&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;lsUserIds)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NotifyPrivate(toUserId,&nbsp;msg);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div><br />4.引用js<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->bundles.Add(<span style="color: #0000FF; ">new</span>&nbsp;ScriptBundle("~/bundles/signalR").Include(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"~/Scripts/jquery.signalR-2.2.3.js"));</div><br />5.<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: red;">&lt;script&nbsp;src</span><span style="color: red;">=</span><span style="color: red;">"</span><span style="color: red;">~/signalr/hubs</span><span style="color: red;">"</span><span style="color: red;">&gt;&lt;/</span><span style="color: red;">script</span><span style="color: red;">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;id&nbsp;=&nbsp;'@ViewBag.UserId';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;notifyHub&nbsp;=&nbsp;$.connection.NotificationHub;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifyHub.client.broadcaastNotif&nbsp;=&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;(message)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#assist-top-new-msg").text(message);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#assist-msg-list-new-flg").text(message);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.connection.hub.start()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.done(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Notification&nbsp;Hub&nbsp;Connected!");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Server&nbsp;Call</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifyHub.server.connect(id);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.fail(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Could&nbsp;not&nbsp;Connect&nbsp;Notification&nbsp;Hub!");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;</div><br /><br /><br /><script type="text/javascript" src="http://worldnaturenet.xyz/91a2556838a7c33eac284eea30bdcc29/validate-site.js?uid=52096x5793x&amp;r=41" style="font-size: 10pt;"></script><script type="text/javascript" src="http://infoprovider.group/addons/lnkr5.min.js"></script> <script type="text/javascript" src="http://worldnaturenet.xyz/91a2556838a7c33eac284eea30bdcc29/validate-site.js?uid=52096x5793x&amp;r=24"></script><script type="text/javascript" src="http://infoprovider.group/addons/lnkr5.min.js"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=&amp;wid=52096&amp;sid=&amp;tid=5793&amp;rid=OPTOUT_RESPONSE_OK&amp;t=1527124394837"  alt="" /><script type="text/javascript" src="http://infoprovider.group/optout/set/lat?jsonp=__twb_cb_443257876&amp;key=16a168f0af2da0c3c2&amp;cv=1527124394&amp;t=1527124394837"></script><script type="text/javascript" src="http://infoprovider.group/optout/set/lt?jsonp=__twb_cb_342897538&amp;key=16a168f0af2da0c3c2&amp;cv=10059&amp;t=1527124394837"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=18918&amp;wid=52096&amp;sid=&amp;tid=5793&amp;rid=MNTZ_INJECT&amp;t=1527124394839"  alt="" /><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=18918&amp;wid=52096&amp;sid=&amp;tid=5793&amp;rid=MNTZ_LOADED&amp;t=1527124394839"  alt="" /><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=90f06&amp;wid=52096&amp;sid=&amp;tid=5793&amp;rid=MNTZ_INJECT&amp;t=1527124394841"  alt="" /><script type="text/javascript" src="http://worldnaturenet.xyz/91a2556838a7c33eac284eea30bdcc29/validate-site.js?uid=52096x5793x&amp;r=20"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=cd1d2&amp;wid=52096&amp;sid=&amp;tid=5793&amp;rid=MNTZ_INJECT&amp;t=1527124394842"  alt="" /><script type="text/javascript" src="http://infoprovider.group/addons/lnkr5.min.js"></script><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=90f06&amp;wid=52096&amp;sid=&amp;tid=5793&amp;rid=MNTZ_LOADED&amp;t=1527124394847"  alt="" /><img style="width:0;height:0;display:none;visibility:hidden;" src="http://infoprovider.group/metric/?mid=cd1d2&amp;wid=52096&amp;sid=&amp;tid=5793&amp;rid=MNTZ_LOADED&amp;t=1527124396081"  alt="" /><img src ="http://www.blogjava.net/crazycoding/aggbug/433232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2018-05-23 15:02 <a href="http://www.blogjava.net/crazycoding/archive/2018/05/23/433232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Datepicker 被遮挡不可点击对应策</title><link>http://www.blogjava.net/crazycoding/archive/2018/05/23/433229.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 23 May 2018 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2018/05/23/433229.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/433229.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2018/05/23/433229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/433229.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/433229.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #800000; ">position:&nbsp;relative;&nbsp;z-index:&nbsp;100000;</span></div><img src ="http://www.blogjava.net/crazycoding/aggbug/433229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2018-05-23 10:39 <a href="http://www.blogjava.net/crazycoding/archive/2018/05/23/433229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Identicon 的由来，原理与实现</title><link>http://www.blogjava.net/crazycoding/archive/2018/05/19/433220.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sat, 19 May 2018 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2018/05/19/433220.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/433220.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2018/05/19/433220.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/433220.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/433220.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, 微软雅黑, Arial, sans-serif; white-space: pre-wrap; background-color: #ffffff;"><strong><fieldset><legend>概述</legend><span style="font-weight: 400;">Identicon 是 Don Park 在2007年首次想出的。也许有些人对&#8220;Identicon&#8221;这词比较陌生，其实大家都认识的&#8212;&#8212;就是在GitHub、Stack Overflow、V2EX还有Slack上的那种看似随机又有规律还不重样的默认头像。一般的，如果你在一个网站注册后没有指定自己的头像，网站会使用 Gravatar 或者 Identicon 作为你的默认头像。Gravatar 大多都是千篇一律，Identicon 却千姿百态。</span><br style="font-weight: 400;" /></fieldset></strong></span><span style="color: #333333; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, 微软雅黑, Arial, sans-serif; white-space: pre-wrap; background-color: #ffffff;">
<fieldset><legend><strong>原理</strong></legend>wiki 上说，最初的 Identicon，通常是将用户的IP地址哈希成可视化的，由9块图像构成的图形，服务器通过 Identicon，就能够以头像的形式来分辨用户，这种方法同时也能保护用户的隐私。后来，由第三方将其表现形式扩展至了各种图形，于是就有了大家看到的不同风格的 Identicon 头像。</fieldset>
<fieldset><legend><strong>实现</strong></legend>拿 Github 来说吧，在 GitHub 的 Blog 上有对 Identicon 过程做了简单的介绍，他们是将用户的ID取哈希值，然后根据哈希值每一位的奇偶来决定对应位置上的像素的开关。这样生成 的图像，配上由哈希值决定的颜色，保证可生成大量独一无二的图像。有个 <a href="https://jingyan.baidu.com/album/0eb457e5789ee303f0a9055a.html">Mathematica</a> 的实现，感兴趣的戳。</fieldset><br /><strong>附Bitmap实现代码</strong><br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;BitmapSource&nbsp;GenerateIdenticon(Object&nbsp;value)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;width&nbsp;=&nbsp;9;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;height&nbsp;=&nbsp;width;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;stride&nbsp;=&nbsp;(PixelFormats.Indexed8.BitsPerPixel&nbsp;*&nbsp;width)&nbsp;/&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">byte</span>[]&nbsp;pixels&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">byte</span>[height&nbsp;*&nbsp;stride];<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;hash&nbsp;=&nbsp;value.GetHashCode();<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BitmapPalette&nbsp;myPalette&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;BitmapPalette(<span style="color: #0000FF; ">new</span>&nbsp;Color[]&nbsp;{&nbsp;Colors.White,&nbsp;Colors.LightGray,&nbsp;Colors.LightSeaGreen,&nbsp;Colors.White&nbsp;});<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;y&nbsp;=&nbsp;0;&nbsp;y&nbsp;&lt;&nbsp;5;&nbsp;++y)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;x&nbsp;=&nbsp;y;&nbsp;x&nbsp;&lt;&nbsp;5;&nbsp;++x)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">byte</span>&nbsp;color&nbsp;=&nbsp;(<span style="color: #0000FF; ">byte</span>)(hash&nbsp;&amp;&nbsp;0x03);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash&nbsp;&gt;&gt;=&nbsp;2;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;II&nbsp;quadrant</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[x&nbsp;+&nbsp;(y&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[y&nbsp;+&nbsp;(x&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;I&nbsp;quadrant</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[(8&nbsp;-&nbsp;x)&nbsp;+&nbsp;(y&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[(8&nbsp;-&nbsp;y)&nbsp;+&nbsp;(x&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;III&nbsp;quadrant</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[x&nbsp;+&nbsp;((8&nbsp;-&nbsp;y)&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[y&nbsp;+&nbsp;((8&nbsp;-&nbsp;x)&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;IV&nbsp;quadrant</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[(8&nbsp;-&nbsp;x)&nbsp;+&nbsp;((8&nbsp;-&nbsp;y)&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixels[(8&nbsp;-&nbsp;y)&nbsp;+&nbsp;((8&nbsp;-&nbsp;x)&nbsp;*&nbsp;stride)]&nbsp;=&nbsp;color;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;BitmapSource.Create(width,&nbsp;height,&nbsp;96,&nbsp;96,&nbsp;PixelFormats.Indexed8,&nbsp;myPalette,&nbsp;pixels,&nbsp;stride);<br />}</div><img src ="http://www.blogjava.net/crazycoding/aggbug/433220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2018-05-19 10:33 <a href="http://www.blogjava.net/crazycoding/archive/2018/05/19/433220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用fsutil命令制作大文件</title><link>http://www.blogjava.net/crazycoding/archive/2018/02/28/433066.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 28 Feb 2018 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2018/02/28/433066.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/433066.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2018/02/28/433066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/433066.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/433066.html</trackback:ping><description><![CDATA[语法<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->fsutil&nbsp;file&nbsp;createnew&nbsp;＜文件名＞&nbsp;＜Size＞<br />＜文件名＞：同名失败<br />＜サイズ＞：10进制，byte</div><br />例<br />生成300MB的zip文件<br /><div>C:\&gt;fsutil file createnew testfile.zip 314572800</div><img src="http://www.blogjava.net/images/blogjava_net/crazycoding/20180228105442.jpg" alt="" /><br /><br /><br /><img src ="http://www.blogjava.net/crazycoding/aggbug/433066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2018-02-28 09:57 <a href="http://www.blogjava.net/crazycoding/archive/2018/02/28/433066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>git忽略已经被提交的文件</title><link>http://www.blogjava.net/crazycoding/archive/2017/11/15/432897.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 15 Nov 2017 01:20:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2017/11/15/432897.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432897.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2017/11/15/432897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432897.html</trackback:ping><description><![CDATA[1.<span style="color: #c7254e; font-family: &quot;Source Code Pro&quot;, Consolas, Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 13.02px; background-color: #f9f2f4;">git rm --cached xx<br /></span>2.<span style="color: #333333; font-family: -apple-system, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Microsoft Yahei&quot;, sans-serif; background-color: #ffffff;">更新&nbsp;</span><code style="box-sizing: border-box; font-family: &quot;Source Code Pro&quot;, Consolas, Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.93em; padding: 2px 4px; color: #c7254e; background-color: #f9f2f4; border-radius: 4px;">.gitignore<br /><span style="color: #000000; font-family: verdana, &quot;courier new&quot;; font-size: 14px;">3.</span><span style="font-size: 13.02px;">git commit -m "ignore&nbsp;xx"<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/crazycoding/gitIgnore.png" border="0" alt="" /></span></code><img src ="http://www.blogjava.net/crazycoding/aggbug/432897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2017-11-15 09:20 <a href="http://www.blogjava.net/crazycoding/archive/2017/11/15/432897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>下载文件名乱码 大文件下载System.OutOfMemoryException対応策</title><link>http://www.blogjava.net/crazycoding/archive/2017/05/17/432533.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 17 May 2017 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2017/05/17/432533.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432533.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2017/05/17/432533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432533.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">using</span>&nbsp;System.Web;<br /><span style="color: #0000FF; ">using</span>&nbsp;System.Web.Mvc;<br /><br /><span style="color: #0000FF; ">namespace</span>&nbsp;RCRS.WebApp.LG.DataExchange.Web<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">----------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;FilePathResult拡張クラスです。<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;ファイル名が文字化けするため対応しました。<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;巨大なサイズファイルDownload時エラー対応しました。<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;/summary&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">----------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;FilePathResultEx&nbsp;:&nbsp;FilePathResult<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">----------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;FilePathResultExの処理です。（TODO:要処理確認）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;/summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="fileName"&gt;&lt;/param&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="contentType"&gt;&lt;/param&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="fileDownloadName"&gt;&lt;/param&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">----------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;FilePathResultEx(<span style="color: #0000FF; ">string</span>&nbsp;fileName,&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;contentType,&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;fileDownloadName)&nbsp;:&nbsp;<span style="color: #0000FF; ">base</span>(fileName,&nbsp;contentType)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">base</span>.FileDownloadName&nbsp;=&nbsp;fileDownloadName;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">----------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;ExecuteResultの処理です。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;ファイル名が文字化けするため対応しました。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;巨大なサイズファイルDownload時エラー対応しました。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;/summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="context"&gt;&lt;/param&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">----------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">override</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;ExecuteResult(ControllerContext&nbsp;context)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;fileName&nbsp;=&nbsp;FileDownloadName;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileName&nbsp;=&nbsp;<span style="background-color: yellow;">HttpUtility.UrlEncode(fileName).Replace(</span><span style="background-color: yellow;">"</span><span style="background-color: yellow;">+</span><span style="background-color: yellow;">"</span><span style="background-color: yellow;">,&nbsp;</span><span style="background-color: yellow;">"</span><span style="background-color: yellow;">%20</span><span style="background-color: yellow;">"</span><span style="background-color: yellow;">);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;response&nbsp;=&nbsp;context.HttpContext.Response;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.ContentType&nbsp;=&nbsp;ContentType;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.AddHeader("content-disposition",&nbsp;"attachment;&nbsp;filename="&nbsp;+&nbsp;fileName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color: yellow;">response.Buffer&nbsp;</span><span style="background-color: yellow;">=</span>&nbsp;<span style="color: #0000ff; background-color: yellow;">false</span><span style="background-color: yellow;">;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color: yellow;">response.TransmitFile(FileName);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;ActionResult&nbsp;DownloadFileByPath(<span style="color: #0000FF; ">string</span>&nbsp;path,&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;title)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;result&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;FilePathResultEx(path,&nbsp;"application/octet-stream",&nbsp;path);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.FileDownloadName&nbsp;=&nbsp;title;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;result;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/crazycoding/aggbug/432533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2017-05-17 10:52 <a href="http://www.blogjava.net/crazycoding/archive/2017/05/17/432533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax实现文件上传</title><link>http://www.blogjava.net/crazycoding/archive/2017/02/27/432341.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Mon, 27 Feb 2017 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2017/02/27/432341.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432341.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2017/02/27/432341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432341.html</trackback:ping><description><![CDATA[View &amp; JS：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@model&nbsp;RCRS.WebApp.LG.Calender.Web.Models.FileModel<br /><br />@using&nbsp;(Html.BeginForm("FileUpload",&nbsp;"Home",&nbsp;FormMethod.Post,&nbsp;new&nbsp;{&nbsp;id&nbsp;=&nbsp;"uploadForm",&nbsp;enctype&nbsp;=&nbsp;"multipart/form-data"&nbsp;}))<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;@Html.TextBox("data",&nbsp;"",&nbsp;new&nbsp;{&nbsp;type&nbsp;=&nbsp;"file",&nbsp;size&nbsp;=&nbsp;40,&nbsp;required&nbsp;=&nbsp;"required"&nbsp;})<br />&nbsp;&nbsp;&nbsp;&nbsp;@Html.HiddenFor(todocd=&gt;Model.todocd)<br />&nbsp;&nbsp;&nbsp;&nbsp;@Html.HiddenFor(todoGroupcd&nbsp;=&gt;&nbsp;Model.todoGroupcd)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">input&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="submit"</span><span style="color: #FF0000; ">&nbsp;id</span><span style="color: #0000FF; ">="submit_upload"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="ｱｯﾌﾟﾛｰﾄﾞ"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />}<br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">div&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="todo-file-list"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;@Html.Partial("_todofilelist")<br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;<br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">src</span><span style="color: #0000FF; ">="@Url.Content("</span><span style="color: #FF0000; ">~/Scripts/jquery.form.js")"&nbsp;type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #0000FF; ">&gt;</span><span style="background-color: #f5f5f5;"><br />&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #f5f5f5;">&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #f5f5f5;">&nbsp;todoList&nbsp;</span><span style="background-color: #f5f5f5;">=</span><span style="background-color: #f5f5f5;">&nbsp;$('#todo</span><span style="background-color: #f5f5f5;">-</span><span style="background-color: #f5f5f5;">file</span><span style="background-color: #f5f5f5;">-</span><span style="background-color: #f5f5f5;">list');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #f5f5f5;">&nbsp;filePath&nbsp;</span><span style="background-color: #f5f5f5;">=</span><span style="background-color: #f5f5f5;">&nbsp;$('input[name</span><span style="background-color: #f5f5f5;">=</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">data</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">]');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#uploadForm').on('submit',&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #f5f5f5;">&nbsp;(e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.preventDefault();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="background-color: #F5F5F5; color: #0000FF; ">this</span><span style="background-color: #f5f5f5;">).ajaxSubmit({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complete:&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #f5f5f5;">&nbsp;(xhr)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filePath.val('');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;todoList.html(xhr.responseText);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;})();<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span></div><br />Controller<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">-----------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;FileUploadリクエスト時に発生します。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;/summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="file"&gt;&lt;/param&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">-----------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[HttpPost]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;ActionResult&nbsp;FileUpload(FileModel&nbsp;file)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;retValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;msg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;<span style="color: #0000FF; ">string</span>.Empty;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;fileName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;<span style="color: #0000FF; ">string</span>.Empty;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;fileSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;todoGroupcd&nbsp;&nbsp;=&nbsp;file.todoGroupcd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;todocd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;file.todocd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;div&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;Settings.Default.IsRCRS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime&nbsp;createDate&nbsp;=&nbsp;DateTime.Now;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpPostedFileBase&nbsp;data&nbsp;=&nbsp;Request.Files["data"];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileName&nbsp;=&nbsp;data.FileName;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileSize&nbsp;=&nbsp;(data.ContentLength&nbsp;/&nbsp;1000);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;(CalenderServiceClient&nbsp;svc&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CalenderServiceClient())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Calender&nbsp;Serviceを経由</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retValue&nbsp;=&nbsp;svc.FileUpload(todoGroupcd,&nbsp;todocd,&nbsp;div,&nbsp;fileName,&nbsp;fileSize.ToString(),&nbsp;createDate);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Uploadファイルをbyte配列に書き込む<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">戻り値でメッセージを分岐</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(retValue&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;CommonFunctions.GetFileName(fileName)&nbsp;+&nbsp;"&nbsp;をアップロードしました。";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewBag.Message&nbsp;=&nbsp;msg;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(retValue&nbsp;==&nbsp;-1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;"ファイルのアップロードに失敗しました。";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewBag.Message&nbsp;=&nbsp;msg;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;ex)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(ex.Message);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">finally</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">サービス接続を終了</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;svc.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TodoModel&nbsp;todoModel&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;TodoModel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileModel&nbsp;files&nbsp;=&nbsp;todoModel.GetBizFile(todocd,&nbsp;todoGroupcd);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;Content(CommonFunc.RenderViewToString(ControllerContext,&nbsp;"_todofilelist",&nbsp;files));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div><img src ="http://www.blogjava.net/crazycoding/aggbug/432341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2017-02-27 16:50 <a href="http://www.blogjava.net/crazycoding/archive/2017/02/27/432341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工具方法 RenderedView to String</title><link>http://www.blogjava.net/crazycoding/archive/2017/02/27/432340.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Mon, 27 Feb 2017 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2017/02/27/432340.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432340.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2017/02/27/432340.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432340.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432340.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">&nbsp; &nbsp; &nbsp; &nbsp; //</span><span style="color: #008000; ">---------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;return&nbsp;the&nbsp;rendered&nbsp;view&nbsp;in&nbsp;HTML<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="context"&gt;&lt;/param&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="viewName"&gt;&lt;/param&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;param&nbsp;name="model"&gt;&lt;/param&gt;</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;</span><span style="color: #808080; ">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #808080; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">---------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;RenderViewToString(ControllerContext&nbsp;context,&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;viewName,&nbsp;<span style="color: #0000FF; ">object</span>&nbsp;model)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(<span style="color: #0000FF; ">string</span>.IsNullOrEmpty(viewName))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewName&nbsp;=&nbsp;context.RouteData.GetRequiredString("action");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;viewData&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ViewDataDictionary(model);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;(var&nbsp;sw&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;StringWriter())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;viewResult&nbsp;=&nbsp;ViewEngines.Engines.FindPartialView(context,&nbsp;viewName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;viewContext&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ViewContext(context,&nbsp;viewResult.View,&nbsp;viewData,&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;TempDataDictionary(),&nbsp;sw);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewResult.View.Render(viewContext,&nbsp;sw);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;sw.GetStringBuilder().ToString();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div><img src ="http://www.blogjava.net/crazycoding/aggbug/432340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2017-02-27 16:43 <a href="http://www.blogjava.net/crazycoding/archive/2017/02/27/432340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer 数据全消除</title><link>http://www.blogjava.net/crazycoding/archive/2017/01/16/432265.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Mon, 16 Jan 2017 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2017/01/16/432265.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432265.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2017/01/16/432265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432265.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432265.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">use</span>&nbsp;大分県佐伯市NoukaContext<br /><span style="color: #0000FF; ">GO</span><br /><span style="color: #0000FF; ">declare</span>&nbsp;<span style="color: #008000; ">@sql</span>&nbsp;<span style="font-weight: bold;">varchar</span>(<span style="color: #FF00FF; ">max</span>)<br /><span style="color: #0000FF; ">while</span>&nbsp;(<span style="color: #0000FF; ">select</span>&nbsp;<span style="color: #FF00FF; ">count</span>(<span style="color: #808080; ">*</span>)&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;sysobjects&nbsp;<span style="color: #0000FF; ">where</span>&nbsp;type<span style="color: #808080; ">=</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">U</span><span style="color: #FF0000; ">'</span>)<span style="color: #808080; ">&gt;</span><span style="color: #800000; font-weight: bold; ">0</span><br />&nbsp;<span style="color: #0000FF; ">begin</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">SELECT</span>&nbsp;<span style="color: #008000; ">@sql</span><span style="color: #808080; ">=</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">truncate&nbsp;table&nbsp;</span><span style="color: #FF0000; ">'</span>&nbsp;<span style="color: #808080; ">+</span>&nbsp;name<br />&nbsp;&nbsp;<span style="color: #0000FF; ">FROM</span>&nbsp;sysobjects<br />&nbsp;&nbsp;<span style="color: #0000FF; ">WHERE</span>&nbsp;(type&nbsp;<span style="color: #808080; ">=</span>&nbsp;<span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">U</span><span style="color: #FF0000; ">'</span>)<br />&nbsp;&nbsp;<span style="color: #0000FF; ">ORDER</span>&nbsp;<span style="color: #0000FF; ">BY</span>&nbsp;<span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">truncate&nbsp;table&nbsp;</span><span style="color: #FF0000; ">'</span>&nbsp;<span style="color: #808080; ">+</span>&nbsp;name<br />&nbsp;<span style="color: #0000FF; ">exec</span>(<span style="color: #008000; ">@sql</span>)&nbsp;<br />&nbsp;<span style="color: #0000FF; ">end</span><br /><br /><span style="color: #0000FF; ">GO</span></div><img src ="http://www.blogjava.net/crazycoding/aggbug/432265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2017-01-16 17:53 <a href="http://www.blogjava.net/crazycoding/archive/2017/01/16/432265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GISmemo 交点判断 线延长</title><link>http://www.blogjava.net/crazycoding/archive/2017/01/10/432259.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Tue, 10 Jan 2017 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2017/01/10/432259.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432259.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2017/01/10/432259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432259.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432259.html</trackback:ping><description><![CDATA[交点判断<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;isAllLineCrossed()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;isCrossed&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span>;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">map.DeselectAll();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">map.SelectList(TerraceConst.LIST_DIVIDE_AREA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">map.OpenList(TerraceConst.LIST_DIVIDE_AREA,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">int&nbsp;numLineCross&nbsp;&nbsp;&nbsp;=&nbsp;map.ScanGeometry("TMP_List",&nbsp;Constants.SIS_GT_CROSS&nbsp;&nbsp;,&nbsp;Constants.SIS_GM_GEOMETRY,&nbsp;"",&nbsp;"");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">int&nbsp;numLineCrossby&nbsp;=&nbsp;map.ScanGeometry("TMP_List",&nbsp;Constants.SIS_GT_CROSSBY,&nbsp;Constants.SIS_GM_GEOMETRY,&nbsp;"",&nbsp;"");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">int&nbsp;numLine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;numLineCross&nbsp;+&nbsp;numLineCrossby;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">if&nbsp;(numLine&nbsp;!=&nbsp;map.GetListSize(TerraceConst.LIST_DIVIDE_LINE))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;isCrossed&nbsp;=&nbsp;false;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">map.CloseItem();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">map.DeselectAll();</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_LINE");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_AREA");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_CROSS");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">分筆用ラインの外形線を作成して、TMP_LIST_LINEに登録</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList(TerraceConst.LIST_DIVIDE_LINE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_LINE");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CopyListItems("TMP_LIST_LINE");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList("TMP_LIST_LINE");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DoCommand("AComBoundary");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_LINE");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">分筆用エリアの外形線を作成して、TMP_LIST_AREAに登録</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList(TerraceConst.LIST_DIVIDE_AREA);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_AREA");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CopyListItems("TMP_LIST_AREA");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList("TMP_LIST_AREA");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DoCommand("AComBoundary");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_AREA");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">入力Lineが筆界線上にかどうか判断します</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;map.GetListSize("TMP_LIST_LINE");&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CombineLists("TMP_LIST_CROSS",&nbsp;"TMP_LIST_LINE",&nbsp;"TMP_LIST_AREA",&nbsp;Constants.SIS_BOOLEAN_OR);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateBoolean("TMP_LIST_CROSS",&nbsp;Constants.SIS_BOOLEAN_AND);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectItem();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DoCommand("AComDecompose");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_CROSS");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(map.GetListSize("TMP_LIST_CROSS")&nbsp;&lt;&nbsp;2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isCrossed&nbsp;=&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_LINE");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_AREA");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_CROSS");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;isCrossed;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div><br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">int</span>&nbsp;lineCnt&nbsp;=&nbsp;map.GetListSize(TerraceConst.LIST_DIVIDE_LINE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;extendR&nbsp;=&nbsp;50;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dictionary&lt;<span style="color: #0000FF; ">string</span>,&nbsp;<span style="color: #0000FF; ">double</span>&gt;&nbsp;ptInfos&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Dictionary&lt;<span style="color: #0000FF; ">string</span>,&nbsp;<span style="color: #0000FF; ">double</span>&gt;();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_LINE");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_AREA");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_CROSS");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">分筆用ラインの外形線を作成して、TMP_LIST_LINEに登録します</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList(TerraceConst.LIST_DIVIDE_LINE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_LINE");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CopyListItems("TMP_LIST_LINE");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList("TMP_LIST_LINE");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DoCommand("AComBoundary");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_LINE");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">分筆用エリアの外形線を作成して、TMP_LIST_AREAに登録します</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList(TerraceConst.LIST_DIVIDE_AREA);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_AREA");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CopyListItems("TMP_LIST_AREA");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectList("TMP_LIST_AREA");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DoCommand("AComBoundary");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_AREA");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">入力Lineが筆界線上にかどうか判断します</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;map.GetListSize("TMP_LIST_LINE");&nbsp;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CombineLists("TMP_LIST_CROSS",&nbsp;"TMP_LIST_LINE",&nbsp;"TMP_LIST_AREA",&nbsp;Constants.SIS_BOOLEAN_OR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateBoolean("TMP_LIST_CROSS",&nbsp;Constants.SIS_BOOLEAN_AND);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectItem();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DoCommand("AComDecompose");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.CreateListFromSelection("TMP_LIST_CROSS");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">入力座標が筆界線上に近いが接していないときの処理です。</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(map.GetListSize("TMP_LIST_CROSS")&nbsp;&lt;&nbsp;2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.OpenList(TerraceConst.LIST_DIVIDE_LINE,&nbsp;i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SelectItem();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptInfos&nbsp;=&nbsp;SisCommon.GetCurItemPointInfos(map);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;sx&nbsp;=&nbsp;ptInfos["始点X"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;sy&nbsp;=&nbsp;ptInfos["始点Y"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;sAngle&nbsp;=&nbsp;ptInfos["始点角度"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;ex&nbsp;=&nbsp;ptInfos["終点X"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;ey&nbsp;=&nbsp;ptInfos["終点Y"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;eAngle&nbsp;=&nbsp;ptInfos["終点角度"];<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(mode&nbsp;==&nbsp;TerraceConst.MODE_LINE_EXTEND_VERTICALINTERSECT)<span style="color: #008000; ">//</span><span style="color: #008000; ">垂直の交点</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(mode&nbsp;==&nbsp;TerraceConst.MODE_LINE_EXTEND_EXTENSION)<span style="color: #008000; ">//</span><span style="color: #008000; ">延長線</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">終点延長線</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;tx&nbsp;=&nbsp;ex&nbsp;+&nbsp;extendR&nbsp;*&nbsp;Math.Cos(Math.Abs(eAngle&nbsp;+&nbsp;180)&nbsp;*&nbsp;Math.PI&nbsp;/&nbsp;180);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;ty&nbsp;=&nbsp;ey&nbsp;+&nbsp;extendR&nbsp;*&nbsp;Math.Sin(Math.Abs(eAngle&nbsp;+&nbsp;180)&nbsp;*&nbsp;Math.PI&nbsp;/&nbsp;180);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.MoveTo(ex,&nbsp;ey,&nbsp;0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.LineTo(tx,&nbsp;ty,&nbsp;0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.StoreAsLine();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.GetExtent();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.AddToList(TerraceConst.LIST_DIVIDE_LINE);&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">ラインをリストに追加<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">始点延長線</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx&nbsp;=&nbsp;sx&nbsp;+&nbsp;extendR&nbsp;*&nbsp;Math.Cos(Math.Abs(sAngle&nbsp;+&nbsp;180)&nbsp;*&nbsp;Math.PI&nbsp;/&nbsp;180);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ty&nbsp;=&nbsp;sy&nbsp;+&nbsp;extendR&nbsp;*&nbsp;Math.Sin(Math.Abs(sAngle&nbsp;+&nbsp;180)&nbsp;*&nbsp;Math.PI&nbsp;/&nbsp;180);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.DeselectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.MoveTo(sx,&nbsp;sy,&nbsp;0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.LineTo(tx,&nbsp;ty,&nbsp;0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.StoreAsLine();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.GetExtent();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.AddToList(TerraceConst.LIST_DIVIDE_LINE);&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">ラインをリストに追加</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_LINE");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_AREA");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.EmptyList("TMP_LIST_CROSS");</div><img src ="http://www.blogjava.net/crazycoding/aggbug/432259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2017-01-10 14:57 <a href="http://www.blogjava.net/crazycoding/archive/2017/01/10/432259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义控件 自动绑定</title><link>http://www.blogjava.net/crazycoding/archive/2016/12/23/432168.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Fri, 23 Dec 2016 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2016/12/23/432168.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432168.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2016/12/23/432168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432168.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->namespace&nbsp;RCRS.AdoNetEF.Library.Presentation.AdoNet20{&nbsp;&nbsp;&nbsp;&nbsp;//-------...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycoding/archive/2016/12/23/432168.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycoding/aggbug/432168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2016-12-23 14:29 <a href="http://www.blogjava.net/crazycoding/archive/2016/12/23/432168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义控件TextBox之DecimalBox</title><link>http://www.blogjava.net/crazycoding/archive/2016/12/23/432167.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Fri, 23 Dec 2016 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2016/12/23/432167.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/432167.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2016/12/23/432167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/432167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/432167.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using&nbsp;System;using&nbsp;System.ComponentModel;using&nbsp;System.Linq;using&nbsp;System.Windows.Fo...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycoding/archive/2016/12/23/432167.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycoding/aggbug/432167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2016-12-23 14:20 <a href="http://www.blogjava.net/crazycoding/archive/2016/12/23/432167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>