![](/img/trans.png)
[英]Why can't I post from my Xamarin Frorms app to my .net core web api
[英]Why can't I prevent chunking on my HttpRequest from WPF client to Web API controller?
我已經為此戰斗了一個星期。 有關其他背景知識,請參見我之前的問題 。
我的WPF
客戶端對我的Web API控制器進行GET
, POST
和PUT
調用。 幾周來一切都很好。 然后突然,我所有的PUT和POST調用都被分塊了。 我找不到任何防止它的方法。 我強烈懷疑我所做的一項重大更改會影響到所有方面,但是我很努力地試圖找到它。 我回顧了源代碼管理並恢復了舊代碼,但它拒絕工作。
我知道“ request.Headers.TransferEncodingChunked”,它沒有任何作用。 我可以在客戶端中將其顯式設置為null或false ,並且它始終以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.