IIS中承载的www.example.com站点的简单控制器路由在IIS中不起作用asp.net

tv6aics1  于 2022-11-24  发布在  .NET
关注(0)|答案(1)|浏览(119)

尝试在IIS中本地托管一个rest服务。在IIS Express中一切都正常,但当我尝试在IIS中本地托管时,路由就不工作了。
1.它被编译为x86,并托管在一个允许32位进程的应用池中。
1.我将站点Map到我的构建版本msbuild /p:Configuration=Release /p:ProcessorArchitecture=x86 -r:False的二进制输出文件夹
1.我已启用Anonymous Authentication
1.绑定类型为http,绑定到端口8000

1.我已经启用了目录浏览,请参见http://localhost:8000/

中的以下内容
1.然而,每当我尝试导航到http://localhost:8000/api/HeartBeat时,我都会得到404 - Not Found
设置默认路由的WebApiConfig类。

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

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

这里是控制器

public class HeartBeatController : ApiController
    {
        // GET: api/HearBeat/5
        public HttpResponseMessage Get()
        {
            return new HttpResponseMessage(HttpStatusCode.OK);
        }

    }

如果我在IIS Express中运行此程序并导航到相同的URL,我会得到一个200。此外,我还尝试使用Get-WebUrl在powershell中检查URL,它显示了一个ProtocolError,但我不知道是什么或为什么。IIS管理器似乎没有任何抱怨。

PS C:\Windows\system32> Get-WebURL -PSPath "IIS:\Sites\Test" | Format-list

Status      : ProtocolError
ResponseUri : http://localhost:8000/
Description : Forbidden
zlwx9yxi

zlwx9yxi1#

有几件事出了差错。
1.通过Visual Studio发布与通过上面的生成命令创建的生成输出有很大不同。
1.我在Windows功能/IIS/应用程序开发功能x1c 0d1x下丢失
1.最后,仍然出现安全错误,需要向目录中添加ACL规则

相关问题