WCF上载文件远程服务器返回错误:(413)请求实体太大
我到处寻找,尝试了很多方法来解决这个问题,但我不知所措,也许这只是我看不到的东西。我有一个带有WCF服务的ASP.NET网站,用于上传文件,我可以上传小文件(虽然16kb在另一端变成977),但当我上传更大的文件(150kb)时,我收到一个错误,远程服务器返回一个错误:(413)请求实体太大。我增加了可上传内容的最大大小,但据我所知,这就是我所需要做的。所以我想你有两个问题:WCF上载文件远程服务器返回错误:(413)请求实体太大,wcf,file-upload,Wcf,File Upload,我到处寻找,尝试了很多方法来解决这个问题,但我不知所措,也许这只是我看不到的东西。我有一个带有WCF服务的ASP.NET网站,用于上传文件,我可以上传小文件(虽然16kb在另一端变成977),但当我上传更大的文件(150kb)时,我收到一个错误,远程服务器返回一个错误:(413)请求实体太大。我增加了可上传内容的最大大小,但据我所知,这就是我所需要做的。所以我想你有两个问题: 为什么文件在我传输后会变得这么大 为什么我不能发送更大的文件而不出现此错误 我的Web服务很好,但为了实现它,下面是代码
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "FileUpload/{fileName}")]
void FileUpload(string fileName, Stream fileStream);
public void FileUpload(string fileName, Stream fileStream)
{
FileStream fileToupload = new FileStream("C:\\" + fileName, FileMode.Create);
byte[] bytearray = new byte[1000000];
int bytesRead, totalBytesRead = 0;
do
{
bytesRead = fileStream.Read(bytearray, 0, bytearray.Length);
totalBytesRead += bytesRead;
} while (bytesRead > 0);
fileToupload.Write(bytearray, 0, bytearray.Length);
fileToupload.Close();
fileToupload.Dispose();
}
我的web.config文件如下
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="uploadfilebinding" closeTimeout="10:01:00"
maxBufferSize="204857600" maxBufferPoolSize="204857600"
maxReceivedMessageSize="104857600" openTimeout="10:01:00"
receiveTimeout="10:10:00" sendTimeout="10:01:00"
messageEncoding="Mtom" transferMode="StreamedRequest">
<readerQuotas maxDepth="204857600" maxStringContentLength="204857600"
maxArrayLength="204857600" maxBytesPerRead="204857600"
maxNameTableCharCount="204857600" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="sUploadFile.UploadFile"
behaviorConfiguration="uploadfilebehavior">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="uploadfilebinding"
contract="sUploadFile.UploadFile">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint
address="mex"
binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
<behavior name="uploadfilebehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
我这样称呼它:
string baseServiceAddress = "http://" + Environment.MachineName + ":8000/suploadfile.svc/FileUpload";
ServiceHost host = new ServiceHost(typeof(sUploadFile), new Uri(baseServiceAddress));
host.AddServiceEndpoint(typeof(IsUploadFile), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior());
host.Open();
byte[] bytearray=null ;
string name = "";
//throw new NotImplementedException();
if (FileUpload1.HasFile)
{
name = FileUpload1.FileName;
Stream stream = FileUpload1.FileContent;
stream.Seek(0, SeekOrigin.Begin);
bytearray = new byte[stream.Length];
int count = 0;
while (count < stream.Length)
{
bytearray[count++] = Convert.ToByte(stream.ReadByte());
}
}
string baseAddress = "http://" + Environment.MachineName + ":8000/suploadfile.svc/FileUpload/";
HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(baseAddress+name);
request.Method = "POST";
request.ContentType = "text/plain";
try
{
Stream serverStream = request.GetRequestStream();
serverStream.Write(bytearray, 0, bytearray.Length);
serverStream.Close();
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
int statusCode = (int)response.StatusCode;
StreamReader reader = new StreamReader(response.GetResponseStream());
}
}
catch (Exception ess)
{
}
}
string baseServiceAddress=“http://“+Environment.MachineName+”:8000/suploadfile.svc/FileUpload”;
ServiceHost主机=新的ServiceHost(typeof(sUploadFile),新的Uri(baseServiceAddress));
host.AddServiceEndpoint(typeof(IsUploadFile),new-WebHttpBinding(),“”)。Behaviors.Add(new-WebHttpBehavior());
host.Open();
字节[]bytearray=null;
字符串名称=”;
//抛出新的NotImplementedException();
if(FileUpload1.HasFile)
{
name=FileUpload1.FileName;
Stream=文件上传1.FileContent;
stream.Seek(0,SeekOrigin.Begin);
bytearray=新字节[stream.Length];
整数计数=0;
while(计数<流长度)
{
bytearray[count++]=Convert.ToByte(stream.ReadByte());
}
}
string baseAddress=“http://“+Environment.MachineName+”:8000/suploadfile.svc/FileUpload/”;
HttpWebRequest请求=(HttpWebRequest)HttpWebRequest.Create(baseAddress+name);
request.Method=“POST”;
request.ContentType=“text/plain”;
尝试
{
Stream serverStream=request.GetRequestStream();
Write(bytearray,0,bytearray.Length);
serverStream.Close();
使用(HttpWebResponse=request.GetResponse()作为HttpWebResponse)
{
int statusCode=(int)response.statusCode;
StreamReader=新的StreamReader(response.GetResponseStream());
}
}
捕获(异常ess)
{
}
}
更改
byte[] bytearray = new byte[1000000];
致:
byte[] bytearray = new byte[fileSize+1];