2014-02-24 97 views
1

在我的自我託管的Web服務,我有一臺服務器的方法來接收上傳的圖片:C#自託管的Web服務:不容上傳文件大於60K

[System.ServiceModel.OperationContract, WebInvoke(UriTemplate = "MalaDireta/saveImage")] 
string MD_saveImage(Stream arq); 

public string MD_saveImage(Stream img) { 
     try { 
      Image i = Image.FromStream(img); 

      //Here I just show received image in a PictureBox 
      new ImageTest(i).ShowDialog(); 
     } 
     catch (Exception ex) { 
      MessageBox.Show("Exception:\n" + ex.ToString()); 
     } 
     return "test"; 
} 

用以下App.config文件:

<?xml version="1.0"?> 
<configuration> 
<system.serviceModel> 
<bindings> 
</bindings> 
<services> 
    <service name="WebService.RestService" behaviorConfiguration="Default"> 
    <host> 
     <baseAddresses> 
     </baseAddresses> 
    </host> 
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="webBehavior" contract="WebService.ICarga"></endpoint> 
    </service> 
</services> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="webBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="Default"> 
     <serviceMetadata httpGetEnabled="true"/> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
</startup> 
</configuration> 

以及上傳圖像(客戶沒有App.config中)以下客戶端的方法:

Image img = Image.FromFile("fileName"); 
    MemoryStream ms = new MemoryStream(); 
    img.Save(ms, ImageFormat.Png); 

    Uri uri = new Uri("http://m.y.i.p:port/MalaDireta/saveImage"); 

    WebClient client = new WebClient(); 
    ms.Position = 0; 
    try { 
     client.UploadData(uri, ms.ToArray()); 
    } 
    catch (Exception exc) { 
     MessageBox.Show("Error at insertion.\n Exception: " + exc.ToString()); 
    } 

而這每工作只要圖像尺寸不大於60k,就會受到影響。否則,我會收到「錯誤400:錯誤的請求」,在這種情況下,服務器方法甚至不會啓動(我在方法開始時嘗試使用MessageBox)。我試圖改變服務器App.Config中的一些東西,但沒有運氣(可能是由於我對配置文件缺乏瞭解)。 任何人都可以請告訴我如何能夠上傳大文件?

在此先感謝。

+0

這應該做的伎倆這個例子是WCF,但必須有你試圖完成什麼simliar約束力。 http://stackoverflow.com/questions/884235/wcf-how-to-increase-message-size-quota – vikingben

+0

謝謝,@vikingben。但仍然給我同樣的錯誤。 – user1531978

+0

另一件我會扔在那裏。我有一個類似的問題,我在一個wcf web服務上傳圖片時遇到了類似的問題,並且在我發現錯誤不在Web服務端上的一個星期之前,但我必須更改客戶端應用程序上的配置。也許值得一試。我在綁定的app.config中使用了相同的max消息。祝你好運。 – vikingben

回答

0

您可以在配置文件中配置最大接收消息大小。欲瞭解更多信息請使用以下鏈接

http://msdn.microsoft.com/en-us/library/ms731361.aspx

+0

感謝您的回答。但我已經嘗試更改爲maxReceivedMessageSize =「2000000000」maxBufferSize =「2000000000」maxBufferPoolSize =「2000000000」,仍然沒有運氣,給我相同的「錯誤400:錯誤的請求」 – user1531978