jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 在更新到5.1.0之后将数据发布到WebApi失败大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用webapi加载/保存数据的网络应用程序
所有以前工作好/
今天我发现有一个更新到ASP.NET MVC / webapi,我安装了更新
但是之后,使用 jquery发送数据不再有效.
我在客户端代码或webapi控制器中没有做任何改变.

我的典型POSt语句如下所示:

showProgress(true,self.PanelID(),'Saving...')
j$.ajax({
    type: "POST",url: uri,data: dataObj,error: function (jqXHR,status,error) {
        showProgress(false);
        GLOBAl.setmessage(self,'Error saving ' + opType + '<br>' + error,truE);
    },success: function (data,jqXHR) {
        showProgress(false);
        if (status === 'success') {
        GLOBAl.setmessage(self,opType + " saved ok");
        //....

$.ajax代码会收到以下错误

"An error has occurred."

Exceptionmessage
    "This method or property is not supported after httprequest.Form,Files,InputStream,or BinaryRead has been invoked."

ExceptionType
    "System.Web.httpException"

StackTrace
at System.Web.httprequest.GeTinputStream(Boolean persistEntityBody,Boolean disableMaxrequestLength) 
at System.Web.httprequestWrapper.GetBufferedInputStream() 
at System.Web.http.WebHost.SeekableBufferedrequestStream..ctor(httprequestBase request) 
at System.Web.http.WebHost.httpControllerHandler.c__DisplayClass11.b__b() at System.Web.http.WebHost.httpControllerHandler.LazyStreamContent.get_StreamContent() at System.Web.http.WebHost.httpControllerHandler.LazyStreamContent.CreateContentReadStreamAsync() at System.Net.http.httpContent.ReadAsStreamAsync() at System.Net.http.httpContentextensions.d__0`1.MoveNext() 
--- End of stack trace from prevIoUs LOCATIOn where exception was thrown --- 
at System.Runtime.Compilerservices.TaskAwaiter.ThrowForNonsuccess(Task task) 
at System.Runtime.Compilerservices.TaskAwaiter.HandleNonsuccessAndDebuggerNotification(Task task) 
at System.Runtime.Compilerservices.TaskAwaiter`1.GetResult() 
at System.Web.http.ModelBinding.FormatterParameterBinding.d__0.MoveNext() 
--- End of stack trace from prevIoUs LOCATIOn where exception was thrown --- 
at System.Runtime.Compilerservices.TaskAwaiter.ThrowForNonsuccess(Task task) 
at System.Runtime.Compilerservices.TaskAwaiter.HandleNonsuccessAndDebuggerNotification(Task task) 
at System.Runtime.Compilerservices.TaskAwaiter.GetResult() 
at System.Web.http.Controllers.httpActionBinding.d__0.MoveNext() 
--- End of stack trace from prevIoUs LOCATIOn where exception was thrown --- 
at System.Runtime.Compilerservices.TaskAwaiter.ThrowForNonsuccess(Task task)
at System.Runtime.Compilerservices.TaskAwaiter.HandleNonsuccessAndDebuggerNotification(Task task) at System.Runtime.Compilerservices.TaskAwaiter.GetResult() at System.Web.http.Controllers.ActionFilterResult.d__2.MoveNext() --- End of stack trace from prevIoUs LOCATIOn where exception was thrown --- at System.Runtime.Compilerservices.TaskAwaiter.ThrowForNonsuccess(Task task) at System.Runtime.Compilerservices.TaskAwaiter.HandleNonsuccessAndDebuggerNotification(Task task) at System.Runtime.Compilerservices.TaskAwaiter`1.GetResult() 
at System.Web.http.Filters.AuthorizationFilterAttribute.d__2.MoveNext() 
--- End of stack trace from prevIoUs LOCATIOn where exception was thrown --- 
at System.Runtime.Compilerservices.TaskAwaiter.ThrowForNonsuccess(Task task) 
at System.Runtime.Compilerservices.TaskAwaiter.HandleNonsuccessAndDebuggerNotification(Task task) 
at System.Runtime.Compilerservices.TaskAwaiter`1.GetResult() 
at System.Web.http.Dispatcher.httpControllerDispatcher.d__0.MoveNext()"

这些是我的解决方案中的nuget包

  package id="Microsoft.AspNet.Mvc" version="5.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.Razor" version="3.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.SignalR.Client" version="2.0.1" targetFramework="net45" 
  package id="Microsoft.AspNet.Web.optimization" version="1.1.2" targetFramework="net45" 
  package id="Microsoft.AspNet.WebApi" version="5.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.WebApi.Client" version="5.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.WebApi.Core" version="5.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.WebApi.HelpPage.VB" version="5.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.WebApi.oData" version="5.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.0" targetFramework="net45" 
  package id="Microsoft.AspNet.WebPages" version="3.1.0" targetFramework="net45" 
  package id="Microsoft.bcl" version="1.1.6" targetFramework="net45" 
  package id="Microsoft.bcl.build" version="1.0.13" targetFramework="net45" 
  package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" 
  package id="Microsoft.Data.oData" version="5.6.0" targetFramework="net45" 
  package id="Microsoft.Net.http" version="2.2.18" targetFramework="net45" 
  package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" 

有人知道有什么问题吗?任何想法如何解决

编辑

样品控制器代码




Public Class ImportController
    Inherits ApiController

    
    
    Public Function SaveImportSession(sessid As String,entity As SIImportSessionDTO) As httpResponsemessage

        Try
            inspectionData.SaveImportSession(sessid,entity)
            Dim response = request.CreateResponse(httpStatusCode.Accepted)
            Return response
        Catch ex As httpResponseException
            Throw
        Catch ex As Exception
            Throw New httpResponseException(request.CreateResponse(Of String)(httpStatusCode.InternalServerError,ex.messagE))
        End Try
    End Function

只使用基于属性的路由,这是我的webapi路由配置

Public Shared Sub Register(ByVal config As httpConfiguration)

        config.MaphttpAttributeRoutes()

        config.Routes.MaphttpRoute( _
            name:="DefaultApi",_
            routeTemplate:="api/{Controller}/{iD}",_
            defaults:=New With {.id = RouteParameter.optional} _

问题,我的服务器端代码甚至没有达到,管道上的其他东西都抛出异常

谢谢

解决方法

发现问题.

我的邮政编码使用$.ajax(…),如初始消息中所示.

但是jquery的.ajax post数据应用程序/ x-www-form-urlencoded.
这在以前的WebAPI版本中起作用,但是在最新的更新中,它似乎认不接受application / x-www-form-urlencoded.

我将内容类型更改为application / json,我不得不将数据转换为json,这样可以解决问题.

所以,而不是

j$.ajax({
    type: "POST",success: function(...)

我不得不改变

j$.ajax({
    type: "POST",data: JSON.Stringify(dataObj),contentType: "application/json; charset=utf-8",success: function(...)

大佬总结

以上是大佬教程为你收集整理的jquery – 在更新到5.1.0之后将数据发布到WebApi失败全部内容,希望文章能够帮你解决jquery – 在更新到5.1.0之后将数据发布到WebApi失败所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。