[ad_1]
大家好…我正在尝试使用 wcf 创建一个用于产品上传的页面。 在此我使用服务库。
但是当单击添加按钮时,它显示远程服务器抛出了名为的异常
远程服务器返回意外响应:(413) 请求实体太大。
我实际上在这篇文章中所做的事情可以任何人帮助我解决这个问题。
添加product.aspx.cs:
超文本标记语言
protected void btnAdd_Click(object sender, EventArgs e) { try { if (ImageUpload.FileName != "") { string path = Server.MapPath("~/images/"); string extension = Path.GetExtension(ImageUpload.PostedFile.FileName); if (((extension == ".jpg") || ((extension == ".gif") || (extension == ".png")))) { FileStream fs = new FileStream(path+ImageUpload.PostedFile.FileName, FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] image = br.ReadBytes((int)fs.Length); // byte[] raw = new byte[fs.Length]; //fs.Read(raw, 0, Convert.ToInt32(fs.Length)); modeldetails.UploadPhoto = image; modeldetails.Serviceno = txtServiceNo.Text; modeldetails.price= long.Parse( txtPrice.Text); modeldetails.Name=txtName.Text; modeldetails.ManfacturedDate=DateTime.Parse(txtManfacDate.Text.ToString()); modeldetails.Manfac_Product_ID=Int32.Parse(ddlProctype.SelectedItem.Value); bool rows = proxy.AddNewProduct(modeldetails); if (rows) { string script = "<script>alert('Data Added Successfully')</script>"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Added", script); } else { string script = "<script>alert('Error Adding Data')</script>"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", script); } } else { StatusLabel.Text = "Only Jpg,gif or Png files are permitted"; } } else { StatusLabel.Text = "Kindly Select a File....."; } } catch (Exception e1) { } }
Wcf服务库:
超文本标记语言
public bool AddNewProduct(Model modeldetails) { SqlConnection con = new SqlConnection(Properties.Settings.Default.constr); con.Open(); SqlCommand insert = new SqlCommand(); insert.CommandType = CommandType.StoredProcedure; insert.CommandText = "AddProduct"; insert.Connection = con; SqlParameter prm = insert.Parameters.Add("@Modelname", SqlDbType.NVarChar, 50); prm.Direction = ParameterDirection.Input; prm.Value = modeldetails.Name; prm = insert.Parameters.Add("@Price", SqlDbType.BigInt); prm.Direction = ParameterDirection.Input; prm.Value = modeldetails.price; prm = insert.Parameters.Add("@ManfacDate", SqlDbType.DateTime); prm.Direction = ParameterDirection.Input; prm.Value = modeldetails.ManfacturedDate; prm = insert.Parameters.Add("@ServiceNo", SqlDbType.NVarChar, 50); prm.Direction = ParameterDirection.Input; prm.Value = modeldetails.Serviceno; prm = insert.Parameters.Add("@MprocID", SqlDbType.Int); prm.Direction = ParameterDirection.Input; prm.Value = modeldetails.Manfac_Product_ID; prm = insert.Parameters.Add("@Image", SqlDbType.Image); prm.Direction = ParameterDirection.Input; prm.Value = modeldetails.UploadPhoto; int insertion_done = insert.ExecuteNonQuery(); if (insertion_done == 1) return true; else return false; }
实体:
超文本标记语言
[DataContract] public class Model { [DataMember] public string Name { set; get; } [DataMember] public string Serviceno { get; set; } [DataMember] public long price { get; set; } [DataMember] public byte[] UploadPhoto { set; get; } [DataMember] public string Configurationdetails { set; get; } [DataMember] public DateTime ManfacturedDate { set; get; } [DataMember] public int Manfac_Product_ID { set; get; } } [DataContract] public class Product { [DataMember] public int ProductID { get; set; } [DataMember] public string ProductName { get; set; } [DataMember] public int Manfac_Product_ID { get; set; } } [DataContract] public class Manfacture { [DataMember] public int ManfacturerID { get; set; } [DataMember] public string ManfactureName { get; set; } }
ServiceLibrary 的 App.config:
超文本标记语言
<system.servicemodel> <bindings> <basichttpbinding> <binding maxbufferpoolsize="2147483647" maxbuffersize="2147483647" maxreceivedmessagesize="2147483647" messageencoding="Text"> <readerquotas maxdepth="2000000" maxstringcontentlength="2147483647" maxarraylength="2147483647" maxbytesperread="2147483647" maxnametablecharcount="2147483647" /> </binding> </basichttpbinding> </bindings> <services> <service name="StoreServiceLibrary.Store"> <endpoint address="" binding="basicHttpBinding" contract="StoreServiceLibrary.IStore"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseaddress="http://localhost:8733/Design_Time_Addresses/StoreServiceLibrary/Service1/" /> </baseAddresses> </host> </service> </services> <behaviors> <servicebehaviors> <behavior> <!-- To avoid disclosing metadata information, set the values below to false before deployment --> <servicemetadata httpgetenabled="True" httpsgetenabled="True" /> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <servicedebug includeexceptiondetailinfaults="False" /> </behavior> </servicebehaviors> </behaviors> </system.servicemodel>
解决方案1
你好,
您正在向客户端发送非常大的实体或大量实体
怎么解决呢。
XML
<system.servicemodel> <bindings> <basichttpbinding> <binding maxreceivedmessagesize="10485760"> <readerquotas ...="" /> </binding> </basichttpbinding> </bindings> </system.servicemodel>
一些参考: http://social.msdn.microsoft.com/Forums/vstudio/en-US/872fff1e-b78e-4b49-808c-558f46a11a17/the-maximum-message-size-quota-for-incoming-messages-65536-has-已超过增加?forum=wcf[^]
http://stackoverflow.com/questions/5337367/wcf-ws- throwing-maxreceivedmessagesizeexceeded[^]
[ad_2]
コメント