Web.Config
1 |
<globalization responseEncoding="gb2312"/> |
CS文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Net; using System.Text; using System.IO; using System.Xml; using System.Collections; using System.Diagnostics; namespace WebPortal { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { CoreProxy.Class1 c = new CoreProxy.Class1(); c.test1(); } protected void Button2_Click(object sender, EventArgs e) { webquerst1(); } public void webquers2() { string html = null; string url = "http://china.alibaba.com/keyword/promotion.htm?catId=14"; WebRequest req = WebRequest.Create(url); req.Method = "POST"; WebResponse res = req.GetResponse(); Stream receiveStream = res.GetResponseStream(); Encoding encode = Encoding.GetEncoding("gb2312"); StreamReader sr = new StreamReader(receiveStream, encode); char[] readbuffer = new char[256]; int n = sr.Read(readbuffer, 0, 256); while (n > 0) { string str = new string(readbuffer, 0, n); html += str; n = sr.Read(readbuffer, 0, 256); } System.Console.Write(html); } //成功!,利用WebRequest 一次Post提交XML内容 public void webquerst1() { WebRequest request = WebRequest.Create("http://192.168.1.244/WebPortal/PortalHandler.ashx"); // Set the Method property of the request to POST. request.Method = "POST"; // Create POST data and convert it to a byte array. System.Xml.XmlDocument xmlpostdata = new System.Xml.XmlDocument(); xmlpostdata.Load(Server.MapPath("XML/20097.xml")); string postData = HttpUtility.HtmlEncode(xmlpostdata.InnerXml); //普通字符串内容 //string postData = "你好,1232355 abdcde"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); // Set the ContentType property of the WebRequest. request.ContentType = "application/x-www-form-urlencoded"; // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; // Get the request stream. Stream dataStream = request.GetRequestStream(); // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream object. dataStream.Close(); // Get the response. WebResponse response = request.GetResponse(); // Display the status. //Console.WriteLine(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. //Console.WriteLine(responseFromServer); // Clean up the streams. reader.Close(); dataStream.Close(); response.Close(); } protected void Button3_Click(object sender, EventArgs e) { WebClientPost(); } //重点!! 成功 利用Webclient Post 按字段的方式提交每个字段的内容给服务器端 public void WebClientPost() { System.Xml.XmlDocument xmlpostdata = new System.Xml.XmlDocument(); xmlpostdata.Load(Server.MapPath("XML/OrderClient.xml")); string OrderClient = HttpUtility.HtmlEncode(xmlpostdata.InnerXml); xmlpostdata.Load(Server.MapPath("XML/Order.xml")); string Order = HttpUtility.HtmlEncode(xmlpostdata.InnerXml); xmlpostdata.Load(Server.MapPath("XML/TargetOut.xml")); string TargetOut = HttpUtility.HtmlEncode(xmlpostdata.InnerXml); xmlpostdata.Load(Server.MapPath("XML/ArrayOfOrderDetail.xml")); string ArrayOfOrderDetail = HttpUtility.HtmlEncode(xmlpostdata.InnerXml); System.Net.WebClient WebClientObj = new System.Net.WebClient(); System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection(); //添加值域 PostVars.Add("OrderClient", OrderClient); PostVars.Add("Order", Order); PostVars.Add("TargetOut", TargetOut); PostVars.Add("ArrayOfOrderDetail", ArrayOfOrderDetail); try { byte[] byRemoteInfo = WebClientObj.UploadValues("http://192.168.1.244/WebPortal/PlaceOrder.ashx", "POST", PostVars); //下面都没用啦,就上面一句话就可以了 string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo); //这是获取返回信息 Debug.WriteLine(sRemoteInfo); } catch { } } //未测试,使用WebClient 一次性提交POst public static string SendPostRequest(string url, string postString) { byte[] postData = Encoding.UTF8.GetBytes(postString); WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); client.Headers.Add("ContentLength", postData.Length.ToString()); byte[] responseData = client.UploadData(url, "POST", postData); return Encoding.Default.GetString(responseData); } /// <summary> /// 这个是用WEbRequest 提交到WEbService 的例子 /// </summary> /// <param name="URL"></param> /// <param name="MethodName"></param> /// <param name="Pars"></param> /// <returns></returns> public static XmlDocument QueryPostWebService(String URL, String MethodName, Hashtable Pars) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; SetWebRequest(request); byte[] data = EncodePars(Pars); WriteRequestData(request, data); return ReadXmlResponse(request.GetResponse()); } private static void SetWebRequest(HttpWebRequest request) { request.Credentials = CredentialCache.DefaultCredentials; request.Timeout = 10000; } private static void WriteRequestData(HttpWebRequest request, byte[] data) { request.ContentLength = data.Length; Stream writer = request.GetRequestStream(); writer.Write(data, 0, data.Length); writer.Close(); } private static byte[] EncodePars(Hashtable Pars) { return Encoding.UTF8.GetBytes(ParsToString(Pars)); } private static String ParsToString(Hashtable Pars) { StringBuilder sb = new StringBuilder(); foreach (string k in Pars.Keys) { if (sb.Length > 0) { sb.Append("&"); } sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(Pars[k].ToString())); } return sb.ToString(); } private static XmlDocument ReadXmlResponse(WebResponse response) { StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); String retXml = sr.ReadToEnd(); sr.Close(); XmlDocument doc = new XmlDocument(); doc.LoadXml(retXml); return doc; } private static void AddDelaration(XmlDocument doc) { XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", null); doc.InsertBefore(decl, doc.DocumentElement); } protected void Button4_Click(object sender, EventArgs e) { } } } |
ashx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Diagnostics; using System.IO; using System.Xml; namespace WebPortal { /// <summary> /// $codebehindclassname$ 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class PortalHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { string testGet = context.Request["testGet"]; string testPost = context.Request["testPost"]; Debug.WriteLine(testGet); Debug.WriteLine(testPost); //一次性提交的方式 //获得内容长度 int len = context.Request.ContentLength; //获得所有内容流 StreamReader reader = new StreamReader(context.Request.InputStream); //读取内容 string responseFromServer = reader.ReadToEnd(); //字段提交Post方式 string a1 = context.Request["A1"]; string a2 = context.Request["A2"]; string a3 = context.Request["A3"]; //解析Html编码 string re = HttpUtility.HtmlDecode(a1); XmlDocument xd = new XmlDocument(); //加载XML xd.LoadXml(re); context.Response.ContentType = "text/plain"; context.Response.Write(testGet); } public bool IsReusable { get { return false; } } } } |
转自:http://www.cnblogs.com/goody9807/archive/2011/10/08/2202265.html
View Detailsusing System; using System.IO; using System.Net; using System.Text; using System.Web; namespace HP.Common { /// <summary> /// 信息 /// </summary> public class InfoCollect { /// <summary> /// 获取内网页面内容 /// </summary> /// <param name="url"></param> /// <returns></returns> public static string GetPageByInner(string url) { return GetPage("http://" + HttpContext.Current.Request.ServerVariables["SERVER_NAME"] + (HttpContext.Current.Request.ServerVariables["SERVER_PORT"] == "80" ? "" : ":" + HttpContext.Current.Request.ServerVariables["SERVER_PORT"]) + url); } /// <summary> /// 获取公网url内容(GET) /// </summary> /// <param name="url"></param> /// <returns></returns> public static string GetPage(string url) { return GetPage(url, "GET", null); } /// <summary> /// 获取公网url内容(Post方法) /// </summary> /// <param name="url"></param> […]
View Details我做了三年的+Perl程序员,以编程为生已经有7年。我生活中克路治-那波卡市(Cluj-Napoca),这是罗马尼亚第二大城市。 四年前我就开始困惑于一个问题:作为一个程序员,我的生活水平和其他国家的程序员有多大差距?那时候我的税后收入大概是每月700欧元(约5830 元,1欧元=8.331人民币)。就当时罗马尼亚的经济水平,整个社会的平均工资低于每月325.91欧元(2715元),我的收入差不多是全国水平的两 倍,这让我产生了一种打死都不离开这里的感觉。然而,这只是一种心理感觉,尽管和其他人比起来我挣得很多,但事实上每月我都挣扎在贫困线上。这种拮据归咎 于我缺乏收入管理,背后的原因是我的妻子刚刚成为一名律师,她现在的收入几乎为0, 克路治-那波卡市的程序员的收入情况 尽管市场在不断的浮动变化,那波卡市里一名有经验的程序员的基本收入大概是这个水平(这里说的收入都是税后水平——净收入): 最初是每月400欧元(3330元) 每6个月涨100欧元(833元)工资 根据个别情况,这个数目会有差异,可能更好,可能更坏。 从好的情况讲,一个程序员的工资水平可以用以下方式获得跳跃式的增长: 通过直接要求 通过跳槽 通过离开公司然后反聘回来 当然,还可以卓越的成绩来跟公司讨价还价,获得涨薪 从不好的情况讲,如果发生下列情况,一个程序员的工资会增长的很慢: 公司的运营状况不好 不善于谈判 一个不关心员工的老板。 自己表现不好 所以,当发现一个有5年经验的程序员拿月薪税后1500欧元(12.5K元)而一个7年经验的只拿月薪1700欧元(14k元)时,就不足为奇了。 几大城市收入/消费水平的比较 最近我发现了这个numbeo网站,它收集世界上各大城市的消费及收入信息,而且,它能让你将两个城市的物价水平,工资及购买力进行比较,你能根据它估算出在另一个城市生活所需要的收入水平。根据它提供的数据,我发现以我现在在那波卡市的收入水平不可能在世界其它城市里生活的很好。(表中的金额都以欧元为单位) 城市 参考收入 收入1 租房价格 收入2 年净收入 伦敦 4762 5,396.93 1,884.00 7,280.93 87,371.20 柏林 2784 3,155.20 800.00 3,955.20 47,462.40 阿姆斯特丹 3826 4,336.13 3,026.00 7,362.13 88,345.60 纽约 4848 5,494.40 2,214.00 7,708.40 92,500.80 旧金山 4484 5,081.87 2,216.00 7,297.87 87,574.40 这些数字的含义 参考收入 – 是指在那个城市如果想让生活质量达到我现在在那波卡市的生活水平,你需要达到的收入水平。按我在那波卡市每月1500欧元收入算。上表中显示的都是税后收入或净收入。 收入1 – 是指如果想在那个城市的生活质量达到在那波卡市的每月1700欧元生活水平质量,你需要达到的净收入。我列出1700欧元水平的原因是它很接近我的水平,这是有7年工作经验的程序员的平均水平。 租房价格 – 一个三居室的价格,非市中心。 收入2 – 这是收入1栏和租房价格的汇总 年净收入 – 是指收入2栏乘以12个月 需要更多的数据 如果在上表中再加入一列各城市的程序员的平均收入信息,那就更清晰了。遗憾的是,我搜查过的大多数网站上只提供税前年收入。因为各地的税收情况各 异,不可能计算出税后收入。所以,如果你是一个在上述城市生活的程序员,并且知道当地平均净收入的情况,请在评论里分享给大家,我会更新到文章里。 克路治-那波卡市(Cluj-Napoca)程序员的生活情况 因为罗马尼亚较低的购买力水平,人们日常的消费水平也比较低。看一下numbeo网站上关于那波卡市的价格水平信息。 1700欧元每月你可以过上任何想要的生活——如果你是个喜欢聚会的人。你的生活大概可以是这样: 一顿三餐(3餐12欧元 * 30 days = 360 欧元/月). 每个周末去最贵的俱乐部玩乐(一晚30欧元 * 8晚 = 240欧元/月) […]
View Details如果你是一个网页设计师,那么你应该清楚字体在网页设计中的重要性,本文再向你推荐 20 个新鲜免费的字体。 God Bless America Astrolyte Beautiful ES Chocolate Dealer 20DB My special angel font Braxton free font G-Unit Rough Brush Script Eletroz Lainie Day Koch Antiqua Zier ALEX BRUSH FontPunk.com font Porter Sans Block Bumple Rolling Rocker Headline Text Frank-n-Plank Science Fair via djdesignerlab 转自:http://www.oschina.net/news/45512/20-fresh-new-free-fonts-designers
View Details任何程序都离不开对异常的处理,良好的异常处理方式可加快寻找出异常的根源,同时也需要避免暴露敏感信息到异常中。WCF这种典型的服务端和客户端交互的程序,服务端的异常更需要适当的处理。下面以一个简单的服务为例,说明WCF中处理异常的方式。 WCF服务定义如下,很明显方法Divide在divisor为0的时候将会抛出异常 View Code 客户端调用如下: using (var client = new CalculateServiceClient()) { try { Console.WriteLine(client.Divide(20, 0)); } catch (FaultException ex) { Console.WriteLine(ex.Reason); } } 首先需要知道的是,WCF的异常信息默认是以FaultException的形式返回到客户端,FaultException的关键属性Reason是对客户端反馈的最重要信息之一。以上客户端代码调用之后,默认的FaultException返回的Message信息如下: 由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或在打开每个 Microsoft .NET Framework 3.0 SDK 文档的跟踪的同时检查服务器跟踪日志。 根据异常的提示,意思说如果要在客户端看到详细的Exception信息,那么请将ServiceBehavior对应的IncludeExceptionDetailInFaults属性设置为True,通常在配置中表现为如下设置: View Code 通过以上设置之后,客户端输出的内容为“尝试除以零”,这个提示信息跟原始的异常信息是一致,即返回的FaultException中的Reason包含原始异常的Message的值,但是这样处理之后服务端所报出的异常信息直接传到了客户端,比如一些保密信息也可能输出到了客户端,因此对于异常信息必须进行一个封装。最直接的形式莫过于在服务端就把异常给捕获了,并重新throw一个FaultException 服务端的代码改进如下,经过以下改进,那么客户端得到的信息仅仅是"操作失败",同时服务端也记录了异常信息(这时IncludeExceptionDetailInFaults是设置为False的)。 View Code 当然这是FaultException的默认用法,FaultException还支持强类型的异常错误信息,返回更加丰富和精确的错误提示。假设定义如下通用的一个FaultContract类型,将出错时的用户名和线程名字记录到异常信息中,因为异常信息也是通过SOAP格式传输的,因此跟定义其他DataContract的方式一样。 CommonFaultContract 那么服务方法的接口需要增加如下标记,如果不这样标记,那么客户端得到的异常类型依然是FaultException,而不是强类型的异常信息。 [FaultContract(typeof(CommonFaultContract))] int Divide(int dividend, int divisor) 实现方法中抛出异常的部分代码改成如下: 异常处理 这时候重新生成客户端的代理类,然后更新客户端的代码如下,红色部分即获取强类型的异常错误信息。 View Code 当然在具体应用中还需要根据需求,返回不同的信息,构建不同的FaultContract。 以上服务端捕获的异常方法,适用于方法比较少的情况,如果有十多个方法,一个个去写try catch然后做标记等,那么工作量会很大,而且代码也不利于重用。尝试寻找像MVC Controller那样的统一处理Exception的方式,将异常处理都放在基类中,那么只要继承与这个基类的方法都不需要去写try catch去捕获异常。但WCF中似乎没有这样的机制,放弃了这种做法。 最近在研究Enterprise Lib中对WCF的支持时,发现Exception Block中还特地有针对WCF程序异常处理的解决方案,而且满足以上说道的需求,即可记录异常,又可对异常信息进行封装。更重要的时,自动处理运行时的异常信息,不需要挨个方法的去写Try catch。秉承企业库的优秀传统,大部分工作还是通过配置就可以完成了,非常好的解决方案。下面介绍具体的使用步骤。 步骤一: 引用以下dll Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF.dll Microsoft.Practices.EnterpriseLibrary.Common.dll Microsoft.Practices.ObjectBuilder2.dll 步骤2: 在具体的实现类中,增加如下属性标记,其中WcfException为企业库中Exception Block中的一个异常处理策略,具体如何配置异常处理策略,请参考企业库的帮助文档。 [ExceptionShielding("WcfException")] public class CalculateService : ICalculateService 那么只要增加了[ExceptionShielding("WcfException")]这个属性标记之后,所有运行时的异常都将交给策略名为WcfException的异常处理block来处理,在这里就可以执行一些异常记录以及异常封装的操作。 步骤3: 将异常信息封装为FaultException,这个动作也是通过配置来完成。在Exception节点中添加一个Fault Contract Exception Handler。 Fault Contract Exception Handler需要设置以下两个属性值 exceptionMessage:所有异常封装后的错误信息 faultContractType:即返回异常的faltContract类型,这个类型必须指定一个,哪怕方法中没有用到也要,如果方法中有用到,那么客户端那边就能得到强类型FaultException,否则就是普通的FaultException。这里指定为之前定义的CommonFaultContract。 对于faultContract类型的值,还可以通过PropertyMappings来自定义需要从原始异常信息中映射到faultContract的属性中,这个属性可选。 […]
View Details使用WCF传输大数据时,我们都会碰到如题中出现的错误信息,出现这个问题是因为WCF本身的安全机制导致的,限制了客户端与服务器资源传输大小,那我们如何还解决这个问题呢? 针对这个问题,我们要分发送、接受两个方面来解决。 发送大数据:在WCF服务端解决 NetTcpBinding binding = new NetTcpBinding(); binding.MaxReceivedMessageSize= 2147483647(更改这个数字) ; 接受大数据:在WCF客户端解决 NetTcpBinding binding = new NetTcpBinding(); binding.ReaderQuotas = new XmlDictionaryReaderQuotas() { MaxStringContentLength = 2147483647(更改这个数字) }; 我们即可以使用如上述通过代码配置,我们同样也可以使用配置文件进行配置(在binding节中)。
1 2 3 4 5 6 7 |
public static System.ServiceModel.BasicHttpBinding Binding() { //读取 XML 数据时,超出最大字符串内容长度配额 (8192)。 System.ServiceModel.BasicHttpBinding bing = new System.ServiceModel.BasicHttpBinding(); bing.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxStringContentLength = 2147483647 }; //(更改这个数字) return bing; } |
1 2 3 |
public static API.iClient api = new API.iClient(Binding(), new System.ServiceModel.EndpointAddress("http://192.168.1.11:4417/WebService.svc")); 转自:<a href="http://www.cnblogs.com/Fooo/archive/2012/12/06/2805362.html">http://www.cnblogs.com/Fooo/archive/2012/12/06/2805362.html</a> |
WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: [csharp] view plaincopy 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formDataXml。InnerException 消息是“反序列化对象 属于类型 System.String 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。 第 137 行,位置为 76。”。有关详细信息,请参阅 InnerException。 网上一搜索,答案基本得到解决,可我的问题就是不能解决(主要是细节打败了我),按照网上的文章进行服务器端修改配置如下: [html] view plaincopy <binding name="HttpBinding" <span style="color:#ff0000"><strong>maxReceivedMessageSize</strong></span>="2097152"> <readerQuotas maxDepth="32" <span style="color:#ff0000"><strong>maxStringContentLength</strong></span>="2097152" maxArrayLength="2097152" maxBytesPerRead="2097152" maxNameTableCharCount="2097152" /> <security mode="None"></security> </binding> 其实这里主要的配置是两个:maxReceivedMessageSize、maxStringContentLength; 网上提到还需要配置客户端,其实如果是报上面错误就不要管客户端了,因为如果是客户端调用WCF报错,就不是读取XML数据超时,而是明确的错误提示,如下: [csharp] view plaincopy 已超过传入消息(1024)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。 所以这篇文章提到的错误基本与客户端无关。 一般情况下,安装上面的修改就可以解决问题了,但是我的WCF还是报错,没办法,只能继续找,无意间发现服务器端WCF配置有点异常,不用登录验证的WCF接口有用到bindingConfiguration,但是需要验证的WCF接口就没有配置该属性,如下代码: [html] view plaincopy <bindings> <wsHttpBinding> <span style="color:#ff0000"><binding name="HttpBinding" maxReceivedMessageSize="2097152"> <readerQuotas maxDepth="32" maxStringContentLength="2097152" maxArrayLength="2097152" maxBytesPerRead="2097152" maxNameTableCharCount="2097152" /> <security mode="None"></security> </binding></span><span style="background-color:#f0f0f0"><binding name="HttpBinding" maxReceivedMessageSize="2097152"> <readerQuotas maxDepth="32" maxStringContentLength="2097152" maxArrayLength="2097152" maxBytesPerRead="2097152" maxNameTableCharCount="2097152" /> <security mode="None"></security> </binding></span> </wsHttpBinding> </bindings> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service name="Achievo.MMIP.WMP.WebService.WMPProcService" behaviorConfiguration="wmpWcfBehavior"> <span style="color:#ff0000"><strong><endpoint address="" binding="wsHttpBinding" contract="Achievo.MMIP.WMP.WebServiceIService.WMPServiceProcIService"></strong> </span> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> <service name="Achievo.MMIP.WMP.WebService.WMPGetFormDataService" behaviorConfiguration="wmpWcfFormDataBehavior"> <span style="color:#ff0000"><strong><endpoint address="" binding="wsHttpBinding" bindingConfiguration="HttpBinding" contract="Achievo.MMIP.WMP.WebServiceIService.IWMPGetFormDataIService"></strong> </span> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> 注意红色部分的配置,大伙可以对比一下,就发现其中一个缺少bindingConfiguration配置;如果这个时候,把缺少的部分补上,和另外一个配置一样,WCF就会出错,这里我的初步判断是:name="Achievo.MMIP.WMP.WebService.WMPProcService"是必须要验证登录才能访问,所以不能绑定上面的匿名访问的配置,简单说就是规定是验证就不能在配置为匿名;所以把配置修改为如下: [html] view plaincopy <bindings> <wsHttpBinding> <span style="color:#ff0000"><strong><binding name="HttpBinding" maxReceivedMessageSize="2097152"> <readerQuotas maxDepth="32" maxStringContentLength="2097152" maxArrayLength="2097152" maxBytesPerRead="2097152" maxNameTableCharCount="2097152" /> <security mode="None"></security> </binding> <binding name="HttpBinding1" maxReceivedMessageSize="2097152"> <readerQuotas maxDepth="32" maxStringContentLength="2097152"/> </binding></strong></span> </wsHttpBinding> </bindings> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service name="Achievo.MMIP.WMP.WebService.WMPProcService" behaviorConfiguration="wmpWcfBehavior"> <strong><span style="color:#ff0000"><endpoint address="" binding="wsHttpBinding" <span style="font-size:18px">bindingConfiguration="HttpBinding1"</span> contract="Achievo.MMIP.WMP.WebServiceIService.WMPServiceProcIService"></span></strong> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> <service name="Achievo.MMIP.WMP.WebService.WMPGetFormDataService" behaviorConfiguration="wmpWcfFormDataBehavior"> <strong><span style="color:#ff0000"><endpoint address="" binding="wsHttpBinding" bindingConfiguration="HttpBinding" contract="Achievo.MMIP.WMP.WebServiceIService.IWMPGetFormDataIService"></span></strong> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> 在验证,OK,通过。 转自:http://blog.csdn.net/yang_5/article/details/11775819
View Details信息检索、数据库和数据挖掘是IT世界目前最流行的事情!要对这方面的知识了解更多,可以在线阅读和下载下面29本绝对免费的电子书。阅读愉快! 1.高级文本挖掘理论及其应用 Shigeaki Sakurai编写,InTech在2012年出版 为了从数据中取知识,文本挖掘技术得到了积极地研究。这本书介绍了高级文本挖掘技术。其中包括从关系获取到实力不强的语言的各种技术。 2. 数据库基础 Serge Abiteboul,Richard Hull,Victor Vianu编写,Addison Wesley在1994年出版 这本书对数据库管理系统的逻辑层次理论的经典问题和高级问题进行了深入的介绍。其中包括详细的论证和大量的例子以及练习。 3. 互联网广告 S.Yuan,A.Z.Abidin,M.Solan,J.Wang编写,arXiv公司在2012年出版 这本书综合性的纵览了互联网广告,讨论了研究的问题,确定当前的技术,给出互联网广告未来的方向。我们以这个行业的简要历史、介绍和分类作为开端。 4. 关系型数据库理论 David Maier编写,计算机科学出版社于1983年出版 这本书试图成为数据库的辅助课程和数据库领域研究的参考书。书中包含的材料包括关系代数、函数依赖、多值和连接依赖,常规报表、展示理论等 5. 使用MapReduce处理集约式文本数据 Jimmy Lin,Chris Dyer编写,Morgan & Claypool出版社于2010年出版 这本书关注的是MapReduce算法设计,着重关注的是自然语言处理、信息获取以及机器学习中常见的文本处理算法。我们简单地介绍了MapReduce设计模型的概念。 6. R语言中的数据挖掘算法 Wikibooks于2010年发表 数据挖掘由从大数据集中确定感兴趣模型的技术和算法组成。目前执行诸如频率模型挖掘、群集、分类和其他工作的算法就有几百种。 7. 数据挖掘简介 Saed Sayad编写,多伦多大学于2011年出版 数据挖掘是通过数据分析的方式解释过去和预测未来。数据挖掘是跨学科的领域,其中涉及到统计学、机器学习、人工智能和数据库技术。 8.大规模数据集的挖掘 斯坦福大学 Anand Rajaraman, Jeffrey D. Ullman著,2010 这本书最重要的是描述了数据挖掘技术。并且,它侧重于更大规模数据的挖掘技术。正是因为它强调数量的巨大,我们的许多例子是关于Web或来源于网络的数据。 9.信息检索:一个调查 美国马里兰大学 Ed Greengrass 著 2000 这是一个在动态信息检索领域的状态调查。主题包括:查询和报表主题,文档集合索引,文档相似度计算的方法,等等。 10.数据库基础 IBM公司 -Neeraj Sharma著 2010 这本免费的电子书教你简单是数据库基础知识,包括关系型数据库理论,数据库设计的物理逻辑,以及SQL查询语音。提升篇涉及到函数,存储过程和XML的使用。 11.多关系数据挖掘 Arno Jan Knobbe著, IOS出版 2006 这本书是关于数据挖掘:从大量的数据中提取出有用的信息。伴随着现代社会公司和机构大量数据的聚集,这个话题已经越来越显得重要了。 12.自然语言接口数据库概论 I. Androutsopoulos, G. D. Ritchie, P. Thanisch – arXiv著 1995 这本书主要介绍数据库中(NLIDBs)的自然语言接口。NLIDBs的优点和缺点都进行了讨论,把NLIDBs与正式查询语言,基于表单的接口,图像化接口进行了比较。 13.数据库系统中的读取 J.m.Hellerstein,m . Stonebraker著 -加州大学伯克利分校,1999年 这些课堂讲稿为学生和专业人士了解最近创新领域提供了一个数据库研究环境和技术背景。这篇文章涉及到了数据库领域中最重要的问题。 14.数据库系统和结构 1998年 西蒙弗雷泽大学Osmar r . Zaiane 著 这本书介绍了数据模型,数据库系统,关系型数据库及关系语言的结构和使用,索引和存储管理,关系型数据库的查询处理,以及关系型数据库的设计理论。 15.数据挖掘的桌面生存指南 […]
View Details计算机数学对于许多人来说可能是一个难以搞定的科目。在这里我们为大家提供了21本免费电子书来帮助大家更好的理解计算机数学。 1. 概率编程和黑客的贝叶斯方法 这本书是对贝叶斯推理的一个引导,着重于计算机理解方面,以数学观点为辅。这本书假定你事先即不了解贝叶斯推理也不了解概率编程的知识。 2. 图灵机时代的数学 Thomas Hales 著,出版商:arXiv ,2013 计算机快速增长,变得在数学中无处不在,我们的后代回顾今天,可能会将它视为金色黎明。这篇文章给出了一个关于数学证明需要依赖计算机计算的调查和证明。 3.Pi的简史:从阿基米德到Eniac Jonathan M. Borwein著,出版商:DocServer, 2010 理解Pi,挑战Pi,原始需要,计算更加精确的Pi的值,这些难题已经挑战了数学家多个世纪,并且Pi已经被证明是计算机数学令人信服的例子。 4. Julia 集和Mandelbrot集概览 – Wikibooks, 2010 这本书展示了计算机是如何画出技术完美的Julia 集和Mandelbrot集图片的。书中对所有必要的理论进行了解释,并提出了一些关于如何将它们放入计算机程序中的建议。 5. 想像统计:程序员的概率和统计 Allen B. Downey著,出版商Green Tea Press, 2011 《想像统计》是一本为Python 程序员准备的概率和统计导论。这本新书着重于用来探索真实数据集合的简单技巧,并回答了一些有趣统计问题。该书假设你已经对Python有所了解。 6. Isabelle/HOL: 高阶逻辑的辅助证明 作者T. Nipkow、L.C. Paulson、M. Wenzel——施普林格出版社,2010 这本书是高阶逻辑的辅助证明的介绍,使用的是Isabelle的辅助证明。这是潜能用户的一本指南。这本书有三个部分:基本技术;逻辑与集合;高级内容。 7.计算机代数,算法,系统和应用 作者Richard Liska。捷克技术大学,1996 目录:绪论;代数算法;数学系统的集成;系统数学集成的基础可行性;计算机代数的应用;研究资源。 8.实代数几何算法 作者S. Basu、R. Pollack、M. Roy——施普林格出版社,2009 专著详细论述了实代数几何算法。书写得很好,对那些工作在实代数几何或将其应用到其它领域的初学者和高级读者都很有用。 9. Nuprl 证明开发系统的数学应用 R. L. Constable著——Prentice Hall,1986 作者提供一个基于他们研究的新的数学思路。书中的许多想法需要数学和计算机科学的本科教育背景。 10.算法代数 Bhubaneswar Mishra著——柯朗数学科学研究所,1993 本书的主要目的是告知,告知那些正在学习计算机科学的高等本科生算法代数中工程和数学的算法思想,这样他们可以将算法代数应用于研究。 11.组合子图归约结构 Philip J. Koopman、Jr著,科学出版社,1990 提出了降低组合图的高速缓存模拟实验结果的一种抽象机。抽象机,也称TIGRE,其还原率可媲美当前先进的技术。 12. 奇异吸引子:创建混沌系统模型 Julien C.Sproot编写,由M&T Books于2000年出版 混沌和分形改变了我们对这个世界的看法。这本书展示了许多由非常简单的方程所产生的艺术魅力的例子,并教会读者如何生成这种模型的无穷变换。 13. 艺术画廊定理及算法 Joseph O’Rourke编写,牛津大学出版社于1987年出版 艺术画廊定理和算法这么叫是因为这些定理与算法与几何图形的可视性以及几何图形的内部切面问题相关。这本书深入的探讨了这个领域的普遍性问题和特殊性问题。 14. Axiom:一个科学计算系统 Richard D.Jenks,Robert S.Sutor编写,axiom-developer.org与2003年发行 Axiom是一个免费的通用的代数计算系统。这本书对AXIOM做了技术性的介绍,双向性地介绍了由符号计算社团开发的系统教程、访问算法,并介绍了一些高级技术。 15. 数学函数图形化的黄金电子书 由E.Pérez在2008年发表 这本书对复变数领域进行了可视化介绍,并隐性地与对应的真正的平面图形进行了比较。这本书假设读者对平面上的曲线和平面有些许了解。 16. 计算机科学家的数学 Gareth J.Janacek,Mark L.Close编写,由BookBoon于2008年出版 你可以在这本书里找到计算机科学家所必须的基础数学。它应当可以帮助你理解数学概念的意义。并对基本逻辑、 因式分解、 绘图函数和矩阵等等问题进行了解释说明。 17. 数学图解:几何图形和PostScript手册 […]
View Details线框图工具在网页和软件开发中扮演着重要的角色,它们帮助开发者和客户提供一个形象的可视网页页面。对你的网站有好性和简单导航操作也是非常的重要,尽管当你的网站内容多而杂的时候。网站一旦进入最后阶段,线框工具还可以帮你减少设计上的麻烦。 笔和纸在绘制初始线框图的时候非常好用,它能描绘出对网站的初步设计。但是,在后期的测试阶段,你需要一个先进的软件应用。这个应用应该支持版本管理和编辑,因此,这样可以削减在设计阶段中本身的缺陷。这里列出了十个流行线框图工具以及它们的费用: 给设计人员的10个极为有用又划算的线框图工具 PowerMockup—PowerPoint上的线框图附加工具 如果你想把Microsoft PowerPoint转换成一个线框图工具,这个附加工具将会相当有用。一个新的面板将会添加到PP窗口中,它使你可以使用展示在面板中的一些线框图元素和图标。可以通过拖拽把它加到幻灯片中。 PowerMockup和所有最新版的Microsoft Office兼容,包括Office 2013。你可以花费$60购买该线框图工具,供单用户使用。 Moqups—在线建模和线框图工具 如果你需要矢量线框图,这个在线HTML5应用应该是你的理想选择。它由罗马尼亚的软件工程师开发,供全世界的开发者免费使用。你甚至都不需要注册。最近,该团队开发了一个高级版的Moqups, 它是可选的,有不受限制的修订、主页、与工程师团队的在线协作以及其它一些有用的特性。 Wireframe.cc — 在线线框图工具(免费) Wireframe.cc是一款简单的工具,它没有那些乱七八糟的东西,你可以直接用鼠标在画布上随意作画。它会产生一个唯一的URL,可以共享。Wireframe.cc完全免费, 但是其高级版是收费的。 Axure RP—扩展线框图工具 它是最具综合性最包罗万象的一个工具之一,最低价是¥290。可以用来做任何事,包括开发复杂原型,说明文档和简单线框草图。它也有一些特定的高级特性,比如在客户端之间分享原型。这种设计方式使得它可以管理组员之间的讨论和反馈以及协作。 Balsamiq Mockups—基于Flash的快速线框工具 自从它在2008年被一名开发者开发出来之后,它在很短的时间内就流行开来。它是如此的流行,全世界已经有数以千计的开发者在使用它了。Balsamiq Mockups可以进行设计,看起来就像是在纸上画的草稿一样,而不像是机器制图。它和Flash兼容良好,并且已经成为Adobe Air Application。你可以用$80买到它。 Fluid UI—供Android, iOS, 和Windows App使用的在线原型设计工具 如果你在找一款给手机应用进行原型设计的工具,Fluid UI将是你的理想选择。它是基于web的工具,既可以用于创建高保真模型,也可以创建低保真的线框。它拥有供Windows 8, android和iOS应用使用的用户接口。针对单个项目,你可以获得一个账户,它提供最多10屏的绝对免费。如果你愿意付费,每月$30起。 Pencil—GUI原型设计工具(开源) Pencil是一款原型设计工具,而且是开源的。我们可以通过它来创建许多设计原型和GUI模型。它有一个巨大的待用图形商店,可以供Android, iOS和web应用来使用,用作通用设计元素和UI控制。 你可以在pencil网站上找到可供下载的工件, 访问许多模板集,都是由用户贡献的。它也给多个操作系统提供独立版本。 UXToolbox—Windows上的线框图工具 如果你在开发手机应用,桌面应用或者网络站点,UXToolbox使你可以创建交互性的原型设计和线框图。它的一个更有趣的特性是,你可以在草图线框图和规矩漂亮的线框图之间来回切换,只需要点击一下按钮。你可以轻松的把设计导出成HTML或XML。$240就可以买到。 Live Wires—iPad上的线框图App 它允许你进行原型设计并直接在iPad进行测试。它同时兼容iPhone和iPad应用。它有一个扩展库。它的收费低至$10。 Mockups.me—UI线框图应用 在特性方面,它和Balsamiq Mockups非常接近,但它要高一个等级因为它可以被用作Android和iOS的手写板。它也有一个内置的交流系统,可以用来收集评论和反馈。它的web版每年收费$100,而手持版仅售$20。 写在最后 所以,市面上有许多线框图工具,可以根据你的需求来选择。这些工具有免费的也有收费的。多数时候,只有高级版才收费,而试用版是免费的。 转自:http://www.oschina.net/translate/10-extremely-useful-and-cost-effective-wireframe-tools-for-designers
View Details