簡體   English   中英

為什么我不能阻止從WPF客戶端到Web API控制器的HttpRequest上的分塊?

[英]Why can't I prevent chunking on my HttpRequest from WPF client to Web API controller?

我已經為此戰斗了一個星期。 有關其他背景知識,請參見我之前的問題

我的WPF客戶端對我的Web API控制器進行GETPOSTPUT調用。 幾周來一切都很好。 然后突然,我所有的PUT和POST調用都被分塊了。 我找不到任何防止它的方法。 我強烈懷疑我所做的一項重大更改會影響到所有方面,但是我很努力地試圖找到它。 我回顧了源代碼管理並恢復了舊代碼,但它拒絕工作。

我知道“ request.Headers.TransferEncodingChunked”,它沒有任何作用。 我可以在客戶端中將其顯式設置為nullfalse ,並且它始終以true的形式到達下面的例程中。

我的PUT / POST控制器方法遵循此模型。 對我來說,結果是我的傳入對象(此處為“ User”)為null。 但是,如果我對請求執行.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設置為null,並將其作為我的Accept-Encoding到達我的控制器:gzip,deflate

一些鏈接描述相同的問題和症狀:

沒有明確的答案,但我終於解決了。 這是一個漫長的過程。

不知道它是怎么到達那里的,但是在我的.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>

...而不是... 不是這個。 我不需要這個東西。 我剛拿出它,一切又重新開始了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM