Tag: asp.net web api

从JQuery对Web API进行POST时出现问题

我有一个带有以下POST方法的web api public HttpResponseMessage Post([FromBody]string package) 我有一个使用HttpCLient的控制台应用程序没有问题。 当我尝试通过jQuery进行调用时,我在包变量上得到null 。 这是我现在的代码: $.ajax({ url: ‘http://localhost:8081/api/Package/’, type: ‘POST’, data: JSON.stringify(message), contentType: “application/json;charset=utf-8”, success: function (data) { alert(data.length); }, error: function (xhr, ajaxOptions, thrownError) { alert(‘Status: ‘+xhr.status+’, Error Thrown: ‘+thrownError); } }); “message”变量是包含两个属性的复杂模型。 我能做错什么? 我很感激你的帮助……

带有MVC4内容的jQuery选项卡

我正在尝试在jQuery选项卡中显示一些MVC4视图。 这是我的代码: App One App Two @{ Html.RenderPartial(“~/Views/AppOne/Index.cshtml”); } @{ Html.RenderPartial(“~/Views/AppTwo/Index.cshtml”); } 问题是第一个标签内容显示正常 – 但第二个是空的。 似乎部分视图没有呈现。 有没有办法强制jQuery选项卡在加载页面时更新所有选项卡的内容,或者强制部分视图在页面加载时呈现?

从ajax调用WebApi时如何调试500内部服务器错误?

我在MVC 4.5 WebApi项目中收到500内部服务器错误。 我可以通过GET和带有ID的GET成功调用我的web服务。 但是,当我发布文件时,我收到错误。 我可以在Application_BeginRequest()设置一个断点,并确认我先收到一个OPTIONS请求,然后是POST。 控制器中的方法没有被调用,我已经向Global.asax.cs添加了一个也没有被命中的Application_Error()方法。 html页面正在进行CORS,但我已经使用ThinkTecture.IdentityModel处理了这个问题 。 我在这里关注文件上传的代码。 有任何想法吗? 这是客户端代码: var UploadDocument = function () { var url = sessionStorage.getItem(“url”); var auth = sessionStorage.getItem(“auth”); var data = new FormData(); jQuery.each($(‘#fileToUpload’)[0].files, function (i, file) { data.append(‘file-‘ + i, file); }); jQuery.support.cors = true; $.ajax({ type: “POST”, url: url, data: data, cache: false, processData: false, […]

混合内容问题 – 不安全的XMLHttpRequest端点

当我使用HTTPS浏览我的网站时,我正面临混合内容问题。 我从jQuery调用API,我没有提到协议,所以假设浏览器应该选择与浏览的站点相同的协议(http或https)。 我的jquery代码如下所示: $.get(“/api/Product/GetMore”, { pageIndex: currentPage }) .done(function(result) { ….. 在http中浏览网站时,它可以正常工作(能够从API调用中获得结果)并执行必要的操作以获得结果。 但当我浏览网站并尝试以https结果时,我在浏览器控制台中遇到错误。 即使我使用https协议对完整的API URL进行硬编码,也会发生同样的事情。 混合内容:“https:/// product”页面是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点’http:/// api / product / getmore?pageIndex = 1’。 此请求已被阻止; 内容必须通过HTTPS提供。 XHR加载失败:GET“https:/// api / Product / GetMore?pageIndex = 1”。 如果您有任何解决方案,请告诉我。 谢谢,沙拉斯

更新到5.1.0后将数据发布到WebApi失败

我有一个使用webapi加载/保存数据的Web应用程序所有用于工作正常/今天我发现有一个更新到ASP.NET MVC / webapi,我安装了更新但是在那之后,jquery的POSTing数据不再有效。 我在客户端代码或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 + ” + error, true); }, success: function (data, status, jqXHR) { showProgress(false); if (status === ‘success’) { GLOBAL.setMessage(self, opType + ” saved ok”); //…. $ […]

在反序列化Web.API参数时未调用自定义Json.NET JsonConverter

我有一个Web.API端点,它将这样的对象作为参数: public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } public UserName UserName { get; set; } } 例如: [Route(“api/person”)] [AcceptVerbs(“POST”)] public void UpdatePerson(Person person) { // etc. } 我已经定义了一个自定义JsonConverter来从JSON字符串属性转换为我的自定义UserName类: public class UserNameJsonDeserializer : JsonConverter { public override bool […]

安全地从jquery调用我的web api

我有一个简单的问题,可能指出一个复杂的答案:( 我有一个web api工作正常。 但现在我想设置身份validation/授权。 我需要它在所有平台上工作,但主要来自jQuery。 当然,我不希望以明文forms在管道中发送我的用户名和密码,如下所示: function GetAllCategories() { var credentials = $.base64.encode(‘r3plica:mypassword’); var authType = “Basic ” + credentials; $.ajax({ url: “http://localhost:18904/api/Categories”, type: “GET”, beforeSend: function (xhr) { xhr.setRequestHeader(“Authorization”, authType); }, success: function (data) { alert(‘Success!’); }, error: function () { alert(‘error’); } }); } 所以我一直在寻找其他选择。 是使用3腿OAuth的唯一选择吗? 我希望只是将查询字符串键/值传递给我的api并让它处理所有内容,但我无法找到一步一步的过程。 一切似乎都很复杂。 那么,有谁知道我能做什么? 我已阅读负载并试图实现大量的东西。 我设法让这个工作: http : […]

Knockout.js – ko.mapping.fromJS – 可见绑定未更新

我正在开发一个网站,每隔5秒更新页面上的值,它调用远程数据库并通过Get Json调用返回MVC模型,并调用 viewModel = ko.mapping.fromJS(model) 。 然后我使用另一个Get调用每隔5秒更新一次该视图模型,然后调用此映射调用 viewModel = ko.mapping.fromJS(model, viewModel). 我的HTML元素上的绑定是正确的,因为从数据库中检索的原始模型显示在屏幕上,但是当模型上的IsVisible属性没有发生时,即表行应该设置为不可见,另一个应该设置可见。 在每次更新时,模型应该是不同的,行设置为可见或不可见以及其他跨度的文本更新,此部分正常工作,并且页面上显示更新,只是可见性不会更改。 HTML使用更新调用的Javascript来发挥可见的不可见问题。 模型中的所有变量都被正确调用我不能为公众发布模型。 var viewModel; var self; var getUpdates = setInterval(function () { $.getJSON( “/Home/Get”, {}, function (model) { viewModel = ko.mapping.fromJS(model, viewModel); }); }, 5000); $(document).ready( function () { $.getJSON( “/Home/Get”, {}, function (model) { viewModel = ko.mapping.fromJS(model); bindViewModel(); }); }); function […]

使用HttpResponseMessage 401在ajaxpost上取得成功

我总是在客户端的ajaxpost上获得statusCode=200 ,而服务器使用HttpStatusCode.Unauthorized回答。 我的控制器代码: public class AccountApiController : ApiController { public HttpResponseMessage Login(HttpRequestMessage request, [FromBody]LoginViewModel loginModel) { return request.CreateErrorResponse(HttpStatusCode.Unauthorized, “Unauthorized login.”); } } 我的ajax代码: $.ajax({ url: ‘/api/accountapi/login’, type: ‘POST’, data: data }) .done(function (object, status, xhr) { alert(“Success: ” + xhr.status + ” : ” + xhr.statusText); }) .always(function (object) { $(“#output”).text(JSON.stringify(object, null, 4)); }); 结果:带文本警报Success: […]

MVC Web API,错误:无法绑定多个参数

传递参数时出错, “无法绑定多个参数” 这是我的代码 [HttpPost] public IHttpActionResult GenerateToken([FromBody]string userName, [FromBody]string password) { //… } 阿贾克斯: $.ajax({ cache: false, url: ‘http://localhost:14980/api/token/GenerateToken’, type: ‘POST’, contentType: “application/json; charset=utf-8”, data: { userName: “userName”,password:”password” }, success: function (response) { }, error: function (jqXhr, textStatus, errorThrown) { console.log(jqXhr.responseText); alert(textStatus + “: ” + errorThrown + “: ” + jqXhr.responseText + ” ” […]