Questions tagged «asp.net-web-api»

ASP.NET Web API是用于为客户端(如浏览器和移动设备)构建HTTP服务的框架。它基于Microsoft .NET Framework,是构建RESTful服务的理想选择。

16
拒绝显示在框架中,因为它将“ X-Frame-Options”设置为“ SAMEORIGIN”
我正在开发一个响应迅速的网站,以便人们可以通过手机访问该网站。该网站有一些安全部件,可以使用Google,Facebook等...(OAuth)登录。 服务器后端是使用ASP.Net Web API 2开发的,前端主要是带有一些Razor的AngularJS。 对于身份验证部分,在包括Android在内的所有浏览器中,一切都可以正常工作,但Google身份验证在iPhone上无法正常工作,这给了我此错误消息 Refused to display 'https://accounts.google.com/o/openid2/auth ?openid.ns=http://specs.openid.ne…tp://axschema.org/namePerson /last&openid.ax.required=email,name,first,last' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 现在,就我而言,我在HTML文件中没有使用任何iframe。 我四处搜寻,但没有答案让我解决问题。


5
ASP.NET Web API的JWT身份验证
我试图在我的Web API应用程序中支持JWT承载令牌(JSON Web令牌),但我迷路了。 我看到了对.NET Core和OWIN应用程序的支持。 我目前在IIS中托管我的应用程序。 如何在我的应用程序中实现此身份验证模块?有什么方法可以使用<authentication>与使用表单/ Windows身份验证类似的配置?

10
HttpClient不支持PostAsJsonAsync方法C#
我正在尝试从Web应用程序调用Web API。我正在使用.Net 4.5,并且在编写代码时遇到的错误HttpClient不包含定义PostAsJsonAsync方法。 下面是代码: HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:51093/"); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); var user = new Users(); user.AgentCode = 100; user.Remarks = "Test"; user.CollectionDate = System.DateTime.Today; user.RemittanceDate = System.DateTime.Today; user.TotalAmount = 1000; user.OrgBranchID = 101; var response = client.PostAsJsonAsync("api/AgentCollection", user).Result; 我收到错误消息: 错误:“ System.Net.Http.HttpClient”不包含“ PostAsJsonAsync”的定义,并且找不到扩展方法“ PostAsJsonAsync”接受类型为“ System.Net.Http.HttpClient”的第一个参数(您是否缺少使用指令还是程序集引用?) …


18
找到多个与Web Api中的请求匹配的操作
当我尝试使用2个“获取”方法时,我一直收到此错误 找到多个符合请求的操作:webapi 我一直在寻找关于堆栈的其他类似问题,但我不明白。 我有2个不同的名称,并使用“ HttpGet”属性 [HttpGet] public HttpResponseMessage Summary(MyVm vm) { return null; } [HttpGet] public HttpResponseMessage FullDetails() { return null; }

7
Microsoft Web API:如何执行Server.MapPath?
由于Microsoft Web API不是MVC,因此您无法执行以下操作: var a = Request.MapPath("~"); 也不是 var b = Server.MapPath("~"); 因为它们在System.Web命名空间下,而不是在System.Web.Http命名空间下。 那么,如何确定Web API中的相对服务器路径? 我曾经在MVC中做过这样的事情: var myFile = Request.MapPath("~/Content/pics/" + filename); 这将给我磁盘上的绝对路径: "C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"

13
从Web Api控制器返回http状态代码
我试图返回状态304,但未在网络api控制器中为GET方法修改。 我成功的唯一方法是这样的: public class TryController : ApiController { public User GetUser(int userId, DateTime lastModifiedAtClient) { var user = new DataEntities().Users.First(p => p.Id == userId); if (user.LastModified <= lastModifiedAtClient) { throw new HttpResponseException(HttpStatusCode.NotModified); } return user; } } 这里的问题是,这不是一个例外,它没有被修改,因此客户端缓存正常。我还希望返回类型为User(如所有Web API示例使用GET所示)不返回HttpResponseMessage或类似的内容。

17
HTTP错误500.19和错误代码:0x80070021
我有一个由Visual Studio 2013构建的简单webAPI。当我从VS13运行它时,它运行良好,但是当我在本地IIS中复制该项目时,会出现以下错误。 HTTP错误500.19-内部服务器错误无法访问请求的页面,因为该页面的相关配置数据无效。 详细错误信息: IIS Web核心模块 通知 BeginRequest 处理程序 尚未确定 错误代码 0x80070021 配置错误 此配置部分无法在此路径上使用。当节锁定在父级时,会发生这种情况。锁定默认情况下是(overrideModeDefault =“ Deny”),或者是由一个带有overlayMode =“ Deny”或旧版allowOverride =“ false”的位置标记显式设置的。 配置文件 \?\ C:\ inetpub \ wwwroot \ APITeslin \ web.config 配置源: 36: <system.webServer> 37: <handlers> 38: <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

5
ASP.NET Web API中的可选查询字符串参数
我需要实现以下WebAPI方法: /api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX 所有查询字符串参数都可以为null。也就是说,调用者可以指定0到5个参数中的所有参数。 在MVC4 Beta中,我曾经执行以下操作: public class BooksController : ApiController { // GET /api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01 public string GetFindBooks(string author, string title, string isbn, string somethingelse, DateTime? date) { // ... } } MVC4 RC不再具有这种行为。如果我指定的参数少于5个,它会回答404: 在控制器“ Books”上未找到与请求匹配的操作。 不需要在URL路由中指定可选参数的正确方法签名,使其具有与以前一样的行为?

6
通过隧道(使用ngrok)将localhost暴露给Internet:HTTP错误400:错误的请求;无效的主机名
从该问题的先前版本开始,有这样一个问题:使用ip地址而不是localhost浏览网站,这大致概述了我到目前为止所做的事情……我已经在使用本地IP。然后我找到了ngrok,显然我不需要通过IP进行连接。 我想做的就是将我在本地主机上运行的网站暴露给互联网。我找到了一个可以做到这一点的工具:ngrok。 在Visual Studio中运行网站,该网站在localhost / port#上启动。我在命令行中运行命令“ ngrok http port#”。一切似乎开始正常。我生成了几个URL,并且ngrok检查URL(localhost:4040)有效。 唯一的问题是,当我转到生成的URL时,出现HTTP错误400:错误的请求无效的主机名。与我运行“ ngrok httprongport#”时,它是一个不同的错误,这是一个主机未找到的错误...所以,我认为正在发生某些事情。我无法分辨... 通过隧道服务将网站公开到互联网上,我缺少步骤吗?如果有,我在ngrok文档中找不到它。

30
Post参数始终为null
自从为WebAPI升级到RC以来,在WebAPI上调用POST时遇到了一些真正的奇怪问题。我什至回到了在新项目上生成的基本版本。所以: public void Post(string value) { } 并从Fiddler致电: Header: User-Agent: Fiddler Host: localhost:60725 Content-Type: application/json Content-Length: 29 Body: { "value": "test" } 当我调试时,字符串“值”从未分配给它。它始终是NULL。有人遇到这个问题吗? (我首先看到了一个更复杂的类型的问题) 该问题不仅与ASP.NET MVC 4绑定,在RC安装后,对于新的ASP.NET MVC 3项目也会发生相同的问题

15
使用IHttpActionResult返回内容以获取非OK响应
对于从Web API 2控制器返回的消息,如果响应正常(状态200),我可以返回包含响应的内容,如下所示: public IHttpActionResult Get() { string myResult = ... return Ok(myResult); } 如果可能的话,我想在此处使用内置的结果类型:https : //msdn.microsoft.com/zh-cn/library/system.web.http.results(v=vs.118).aspx 我的问题是,对于另一种类型的响应(不是200),如何返回一条消息(字符串)?例如,我可以这样做: public IHttpActionResult Get() { return InternalServerError(); } 但不是这个: public IHttpActionResult Get() { return InternalServerError("Message describing the error here"); } 理想情况下,我希望对此进行概括,以便我可以使用IHttpActionResult的任何实现将消息发送回去。 我是否需要这样做(并建立自己的响应消息): public IHttpActionResult Get() { HttpResponseMessage responseMessage = ... return ResponseMessage(responseMessage); } …

28
从2012年更新到2013年后,无法加载文件或程序集'System.Web.Http 4.0.0
我做了升级。 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and- web-api-2 我得到了错误。还有其他人收到此错误吗? “ /”应用程序中的服务器错误。 无法加载文件或程序集'System.Web.Http,版本= 4.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040) 说明:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。 异常详细信息:System.IO.FileLoadException:无法加载文件或程序集'System.Web.Http,版本= 4.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040) 源错误: 行48:行49:行50:}行51:行52:受保护的void Application_BeginRequest(对象发送者,EventArgs e) 源文件:d:\ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ Global.asax.cs行:50 程序集加载跟踪:以下信息有助于确定为什么无法加载程序集'System.Web.Http,版本= 4.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'。 ===预绑定状态信息===日志:DisplayName = System.Web.Http,版本= 4.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35(完全指定)日志:Appbase = file:/// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/日志:初始PrivatePath = D:\ SM \ 7.4Test \ WebAPIServerV2 …

15
未经授权的webapi调用返回登录页面而不是401
如何配置我的mvc / webapi项目,以使从剃刀视图调用的webapi方法在未经授权时不返回登录页面? 它是一个MVC5应用程序,还具有用于通过javascript进行调用的WebApi控制器。 下面的两种方法 [Route("api/home/LatestProblems")] [HttpGet()] public List<vmLatestProblems> LatestProblems() { // Something here } [Route("api/home/myLatestProblems")] [HttpGet()] [Authorize(Roles = "Member")] public List<vmLatestProblems> mylatestproblems() { // Something there } 通过以下角度代码调用: angular.module('appWorship').controller('latest', ['$scope', '$http', function ($scope,$http) { var urlBase = baseurl + '/api/home/LatestProblems'; $http.get(urlBase).success(function (data) { $scope.data = data; }).error(function (data) { …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.