Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF上载文件远程服务器返回错误:(413)请求实体太大_Wcf_File Upload - Fatal编程技术网

WCF上载文件远程服务器返回错误:(413)请求实体太大

WCF上载文件远程服务器返回错误:(413)请求实体太大,wcf,file-upload,Wcf,File Upload,我到处寻找,尝试了很多方法来解决这个问题,但我不知所措,也许这只是我看不到的东西。我有一个带有WCF服务的ASP.NET网站,用于上传文件,我可以上传小文件(虽然16kb在另一端变成977),但当我上传更大的文件(150kb)时,我收到一个错误,远程服务器返回一个错误:(413)请求实体太大。我增加了可上传内容的最大大小,但据我所知,这就是我所需要做的。所以我想你有两个问题: 为什么文件在我传输后会变得这么大 为什么我不能发送更大的文件而不出现此错误 我的Web服务很好,但为了实现它,下面是代码

我到处寻找,尝试了很多方法来解决这个问题,但我不知所措,也许这只是我看不到的东西。我有一个带有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];