第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

.Net Core 2.2 Web API 405

.Net Core 2.2 Web API 405

C#
侃侃無(wú)極 2023-07-09 16:36:52
我正在嘗試設(shè)置 .net core 2.2 Web api 來(lái)使用后動(dòng)詞。除了 get 動(dòng)詞之外的任何其他操作都會(huì)返回 405,無(wú)論它是在我的本地計(jì)算機(jī) (w10 iis eXPRESS 10.0) 還是 Windows 服務(wù)器 (2016 R2 IIS 8.0) 上運(yùn)行。我讀過(guò)有關(guān)在配置文件中禁用 WebDav、添加路由以及完全刪除 WebDav 功能的其他文章。我已經(jīng)做了所有這些都沒(méi)有效果。我剛剛開(kāi)始在核心中進(jìn)行開(kāi)發(fā),發(fā)現(xiàn)這令人困惑,在同一臺(tái)服務(wù)器上是一個(gè)在 .net Framework 4.5 上運(yùn)行的非核心 Web api,它可以毫無(wú)錯(cuò)誤地處理 GET、PUT、POST、DELETE。是的,我在更改任何配置后重新啟動(dòng)了服務(wù)器。以下是我所做的 web.config 更改,最后一項(xiàng)直接來(lái)自 MS。在我的機(jī)器和服務(wù)器上重現(xiàn)相同錯(cuò)誤的基本項(xiàng)目在這里https://github.com/FranciscanMedia/error405_core/tree/master它只是啟動(dòng) VS2019 時(shí)獲得的標(biāo)準(zhǔn) Web api 項(xiàng)目。<system.webServer>        <handlers accessPolicy="Read, Script">       <remove name="WebDAV" />       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />       <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"          path="*."          verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"          modules="IsapiModule"          scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"          preCondition="classicMode,runtimeVersionv4.0,bitness64"          responseBufferLimit="0" />    </handlers></system.webServer><system.webServer>        <modules>                <remove name="WebDAVModule" />        </modules>        <handlers>                <remove name="WebDAV" />        </handlers></system.webServer><system.webServer>    <validation validateIntegratedModeConfiguration="false"/>    <modules runAllManagedModulesForAllRequests="false">        <remove name="WebDAVModule"/>    </modules>    </system.webServer><system.webServer>    <handlers accessPolicy="Read, Script">        <remove name="WebDAV" />        <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />        <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"           path="*."           verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"           modules="IsapiModule"           scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"           preCondition="classicMode,runtimeVersionv4.0,bitness64"           responseBufferLimit="0" />    </handlers></system.webServer>
查看完整描述

4 回答

?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

簡(jiǎn)短回答

事情可能就是這么簡(jiǎn)單。原因是路由。

只需將您的POST請(qǐng)求發(fā)送到正確的 URL,例如https://localhost:44327/api/values/123.



這不是問(wèn)題。它按預(yù)期工作。


您GET向 提出請(qǐng)求https://localhost:44327/api/values/。它返回200 OK。


但是當(dāng)你POST向同一個(gè) URL 發(fā)出請(qǐng)求時(shí)https://localhost:44327/api/values/。它說(shuō)405 Method not allowed。


然而,你得到了405。發(fā)生這種情況是因?yàn)槟贕ET使用方法到達(dá)終點(diǎn)POST。


微軟文檔說(shuō):


...HTTP 客戶端向 Web 服務(wù)器上的 Web API 應(yīng)用程序的 URL 發(fā)送了有效的 JSON 請(qǐng)求,但服務(wù)器返回了 HTTP 405 錯(cuò)誤消息,表明該 URL 不允許使用 PUT 方法。相反,如果請(qǐng)求 URI 與 Web API 應(yīng)用程序的路由不匹配,服務(wù)器將返回 HTTP 404 Not Found 錯(cuò)誤。


https://learn.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications


如果只是刪除GET端點(diǎn)。請(qǐng)求POST將開(kāi)始返回404 Not found。這意味著您沒(méi)有到達(dá)任何已注冊(cè)的路線。


要發(fā)送POST請(qǐng)求,您需要根據(jù)路由規(guī)則使用不同的 URL。


[Route("api/[controller]")]

[ApiController]

public class ValuesController : ControllerBase

{


? ? // POST api/values

? ? [HttpPost("{val}")]

? ? public StatusCodeResult Post()

? ? {

? ? ? ? return Ok();

? ? }

}

這種基于屬性的配置意味著您的POST端點(diǎn)的路由是/api/Values/{val}。哪里{val}有什么價(jià)值。它不在端點(diǎn)中進(jìn)行處理。


如果你想處理它,你應(yīng)該將它傳遞給方法:


[HttpPost("{val}")]

public StatusCodeResult Post(string val)

{

? ? return Ok();

}


查看完整回答
反對(duì) 回復(fù) 2023-07-09
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊

查看您定義的內(nèi)容:


[Route("api/[controller]")]

[ApiController]

public class ValuesController : ControllerBase

然后是動(dòng)作:


[HttpPost("{val}")]

public StatusCodeResult Post()

{

? ? ? ? return Ok();

}

您的路由匹配以下 url:

https://localhost:44327/api/values/StatusCodeResult

它將采用控制器上定義的主路由 [Route("api/[controller]")]

然后您定義“模板”以使用“{val}”

這告訴它使用 ActionResult特定名稱并期望 var val 被傳遞/附加。


在“路由模板中的令牌替換([控制器]、[操作]、[區(qū)域])”部分下

他們具體說(shuō)明:

為了方便起見(jiàn),屬性路由通過(guò)將標(biāo)記括在方括號(hào) ([, ]) 中來(lái)支持標(biāo)記替換。標(biāo)記 [action]、[area] 和 [controller] 將替換為定義路由的操作中的操作名稱、區(qū)域名稱和控制器名稱的值。在以下示例中,操作與注釋中所述的 URL 路徑匹配:

[Route("[controller]/[action]")]

public class ProductsController : Controller

{

? [HttpGet] // Matches '/Products/List'

? public IActionResult List() {

? ? // ...

? }


? [HttpGet("{id}")] // Matches '/Products/Edit/{id}'

? public IActionResult Edit(int id) {

? ? // ...

? }

}

如果您希望它僅基于動(dòng)詞進(jìn)行路由(遵循每個(gè) api 端點(diǎn)僅處理該特定對(duì)象的操作的模式),那么您可以將 post 方法更改為


? ? [HttpPost]

? ? public ActionResult Post(string val)

? ? {

? ? ? ? return Ok();

? ? }


查看完整回答
反對(duì) 回復(fù) 2023-07-09
?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

我認(rèn)為在你的控制器中你必須導(dǎo)入另一個(gè)庫(kù)。嘗試

using System.Web.Http;

代替

using Microsoft.AspNetCore.Mvc


查看完整回答
反對(duì) 回復(fù) 2023-07-09
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

你的github上的代碼,


// POST api/values

[HttpPost("{val}")]

public StatusCodeResult Post()

{

? ? ?return Ok();

}

每個(gè)路由操作配置都需要一個(gè)值 {val}。由于您可能會(huì)嘗試在沒(méi)有任何價(jià)值的情況下?lián)糁刑樱虼诉@是不允許的。確保您提供一些值,然后執(zhí)行 POST。如果您使用的是 POSTMAN,則可能必須為請(qǐng)求的正文提供一些值。Swagger 是一個(gè)很棒的實(shí)用工具,可以嵌入到 Web API 中,并且為我們的路線/資源提供了出色的直觀 UI。這甚至可能是幫助確定并確保您提供正確價(jià)值的理想選擇。


否則,您無(wú)需修改或擔(dān)心 IIS 或 IIS Express 設(shè)置?;?webdav。


查看完整回答
反對(duì) 回復(fù) 2023-07-09
  • 4 回答
  • 0 關(guān)注
  • 206 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)