2014-06-06 222 views
2

我有2個環境,直到今天我還以爲是完全一樣的。 (沙盒&生產)HttpPostedFileBase null在生產環境中,但沒有測試環境

我有一個移動設備,發佈文件到服務器。這在沙盒環境中工作正常,但是當我在生產環境中運行同樣的東西時,該文件爲空。我已經檢查了web.config並且在兩種環境中都設置了<httpRuntime requestValidationMode="2.0" maxRequestLength="264768888" /> 。我在這裏錯過了什麼?有什麼不同?這可能是在IIS中的一些設置?代碼如下:

我正在測試的文件是64k。

服務器代碼

[HttpPost, Url("v3/organizations/{organizationId?}/SyncVideo/")] 
public virtual void SyncVideo(HttpPostedFileBase file, Guid? organizationId) { 
    if (file == null) 
     throw new HttpBadRequestException("file is missing"); 

    if (organizationId.IsNull()) throw new HttpNotFoundExecption(); 
    if (organizationId != RESTContext.OrganizationId) throw new HttpNotAuthorizedException(); 

    var basePath = RESTContext.Config.VideoPath; 

    //using (new Impersonator(RESTContext.Config.VideoPathUsername, RESTContext.Config.VideoPathDomain, 
    // RESTContext.Config.VideoPathPassword)) { 
    // if (!Directory.Exists(basePath)) 
    //  Directory.CreateDirectory(basePath); 
    // file.SaveAs(basePath + @"\" + file.FileName); 
    //} 
} 

客戶端代碼

public void UploadFile(string url, string path) { 
    Stream stream = null; 
    HttpClient client = null; 
    MultipartFormDataContent content = null; 
    StreamContent streamContent = null; 

    try { 
     stream = Platform.FileSystem.ReadStreamFromFile(path); 
     Platform.Console.WriteLine(stream.Length.ToString()); 
     client = new HttpClient(); 
     content = new MultipartFormDataContent(); 

     foreach (var header in headers) 
      client.DefaultRequestHeaders.Add(header.Key, header.Value); 

     streamContent = new StreamContent(stream); 

     content.Add(streamContent, "file", Path.GetFileName(path)); 
     var message = client.PostAsync(url, content).Result; 

     if (message.StatusCode != HttpStatusCode.OK) { 
      Platform.Console.WriteLine(message.ToString()); 
      throw new Exception(message.ToString()); 
     } 
    } finally { 
     content.NullSafeDispose(); 
     client.NullSafeDispose(); 
     stream.NullSafeDispose(); 
     streamContent.NullSafeDispose(); 
    } 
} 
+0

您的web.config是不同的機器?你的表單呈現的HTML怎麼樣? – Dai

+0

@Dai web.configs是99%相同減去一些連接字符串和應用程序設置。我沒有使用HTML來發布文件,這是一個移動設備直接通過API調用。 –

+0

嗯,請驗證來自客戶端的請求中的「Content-Type」是否正確。 – Dai

回答

2

在服務器上安裝的.NET Framework 4.5.1固定它。它以前只有4.5。我敢肯定,爲什麼這個工作,但它沒有...

+0

我有同樣的問題。但是,由於某些原因,我無法在服務器中安裝新的框架版本。你以後找到什麼? –

相關問題