当前位置: 首页 > 知识库问答 >
问题:

服务器中的C#webapi Cors选项请求返回错误404未找到

孙阳舒
2023-03-14

我面临的问题与选项飞行前请求显示404未找到。在我的本地环境中测试了这一点,我的设置工作完全正常。但是,当我试图在实际的IIS服务器中实现这一点时,选项预试请求显示没有找到404。我的api是作为一个web api项目创建的。

我曾尝试按照其他帖子中的建议设置飞行前请求处理程序,但它仍然不起作用。是否有任何特定的原因,它只在本地工作?

本节显示选项请求:

General

Request URL: http://api.domain.cc/api/Login
Request Method: OPTIONS
Status Code: 404 Not Found
Remote Address: 192.168.10.5:80
Referrer Policy: strict-origin-when-cross-origin

Response Headers:
HTTP/1.1 404 Not Found
Content-Type: text/html
X-Powered-By: ASP.NET
Server: Domain
Date: Tue, 30 Mar 2021 07:54:34 GMT
Content-Length: 1245

Request Headers:

OPTIONS /api/Login HTTP/1.1
Host: api.domain.cc
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: */*
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization,content-type
Origin: http://site.domain.cc
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36
Sec-Fetch-Mode: cors
Referer: http://site.domain.cc/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,zh-TW;q=0.8,zh;q=0.7,zh-CN;q=0.6

我的web.config设置如下:

<system.webServer>
      <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
          <remove name="OPTIONSVerbHandler" />
          <remove name="TRACEVerbHandler" />
          <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <remove name="ApplicationInsightsWebTracking" />
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
    </modules>    
  </system.webServer>

我的web api配置如下:

        public static void Register(HttpConfiguration config)
        {

            // Web API configuration and services
            EnableCorsAttribute cors = new EnableCorsAttribute(
                                        origins: "http://site.domain.cc",
                                        headers: "*",
                                        methods: "GET, POST, DELETE, PUT, OPTIONS")
            {
                SupportsCredentials = true
            };
            config.EnableCors(cors);

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

共有2个答案

芮意
2023-03-14

我设法解决了我这边的问题。我在这里做了两件事。

  1. 允许UrlScan中的“选项”动词,如本文404 for web.api cors OPTIONS所述
  2. 确保应用程序池配置为“集成”模式

我的api仍然为选项请求返回错误404的原因是因为我的应用程序池以前设置为“经典”模式。

穆招
2023-03-14

你能先测试你的api控制器吗,在你的web配置中设置允许的来源为“*”

如果这也返回404 not found,那么问题出在其他方面,而不是CORS。

 类似资料:
  • 1.将我的文件上载到000webhost。我将公用文件夹中的所有文件放置到public_html,然后创建了一个名为laravel的文件夹,并在那里上载了所有其他文件。这是我的目录结构: 拉拉维尔 应用程序 引导 配置 .... 公共网页 index.html ...... 2.在我的索引中。php文件,我已经更改了一些内容 > 需要目录。'//laravel/引导/自动加载。php′; $app

  • 我使用RESTAssured练习web服务。在post请求中,它返回500服务器错误,其中我使用邮差发送请求,没有错误。谁能帮我调试一下这个错误吗?请给点意见。任何帮助都是感激的?提前道谢。 错误消息的状态代码应为<200>,但为<500>。 堆栈跟踪:

  • 这是我的控制器,它将请求映射到以下url

  • 问题内容: 我有这个应用程序,它可以在本地运行,并且在部署时可以使用.mdf SQL Express数据库文件(通常用于测试目的)。但是,当我将其更改为可与我们的SQL Server 2008一起使用时,该应用程序可以运行,但该服务无法运行。 例如,如果在页面后面的代码中,我有一个按钮可以向表中添加数据,例如: 我的web.config设置为在该服务器上使用模拟,并且一切运行良好。但是,对于我的服

  • 问题内容: 我的科尔多瓦版本是 5.0.0 将应用程序部署在设备上时,对于所有ajax请求都收到404错误。在网络浏览器上,它可以正常工作,但是在设备上部署时,相同的应用程序无法正常工作。 我尝试添加关注者来解决该问题,但没有帮助。 Config.xml AndriodManiest.xml 我还在index.html文件中添加了以下内容,但也没有任何区别。 这里的任何人还有另一个解决此问题的技巧

  • 这是我在laravel 5中的测试ajax(参考下面) 以及触发链接 我的路线呢 但它给我一个错误,当我在谷歌chrome运行控制台,它不返回预期的响应返回成功!Ajax在laravel 5';" 邮递http://juliver.laravel.com/test500(内部服务器错误) 我的代码有什么问题?我遗漏了什么?