2017-02-19 24 views
0

我一直在爲此奮戰一週。有關其他背景信息,請參閱my previous question爲什麼我不能防止從我的HttpRequest從WPF客戶端分塊到Web API控制器?

我的WPF客戶端使GET,POSTPUT調用我的Web API控制器。一切都好幾個星期。然後突然,所有我的PUT和POST調用進入分塊。我找不到任何方法來防止它。我強烈懷疑我做出了一個影響一切的中心變化,但我竭盡全力去尋找它。我已經回顧了源代碼管理並恢復了舊代碼,但它拒絕工作。

我知道「request.Headers.TransferEncodingChunked」,它沒有效果。我可以明確地將其設置爲nullfalse在我的客戶端,並且它總是以我的例程在下面作爲true到達。

我的PUT/POST控制器方法遵循此模型。對我來說,結果是我的傳入對象(「用戶」在這裏)爲空。但是如果我對請求做了.ReadAsStringAsync(),我就會得到預期的JSON。但我不想重新構建這個非直觀模式的應用程序;被炸燬的物體應該剛剛抵達並準備工作!

[HttpPut] 
[ResponseType(typeof(User))] 
public IHttpActionResult Put([FromBody] User user) 
{ 
    if (user == null) 
     return Content(HttpStatusCode.BadRequest, "User data is null"); 

    try 
    { 
     ....etc. 
    } 
} 

「用戶」對象是實體框架對象,並且不顯着。簡單的字符串,DateTime和數字屬性。

類似的,同樣的真氣,我可以設置request.Headers.AcceptEncoding到,它在我的控制器到達作爲接受編碼:gzip,緊縮

描述了同樣的問題和症狀有些鏈接:

回答

0

沒有明確的答案就這一點,但我終於得到它固定。這是一個長期的過程。

不知道如何到達那裏,但在我的.csproj我有這樣的:

<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
    <HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

而不是這樣的:

<Reference Include="System.Net.Http" /> 

而在我的App.config中我有這樣的:

<dependentAssembly> 
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> 
</dependentAssembly> 

...不是... 這一點。我不需要這些東西。我把它拿出來,一切都開始了。

相關問題