繁体   English   中英

对于 IIS 中托管的 asp.net 站点,简单的 controller 路由在 IIS 中不起作用

[英]Simple controller routing doesn't work in IIS for asp.net site hosted in IIS

尝试在 IIS 中本地托管 rest 服务。在 IIS Express 中一切正常,但一旦我尝试在 IIS 中本地托管,路由就不起作用。

  1. 它被编译为 x86 并托管在允许 32 位进程的应用程序池中。
  2. 我将该站点映射到我的构建msbuild /p:Configuration=Release /p:ProcessorArchitecture=x86 -r:False中的二进制 output 文件夹
  3. 我启用了Anonymous Authentication
  4. 绑定类型为http到端口 8000 在此处输入图像描述
  5. 我已启用目录浏览并在http://localhost:8000/查看以下内容在此处输入图像描述
  6. 但是,每当我尝试导航到http://localhost:8000/api/HeartBeat时,我都会收到404 - Not Found

我的 WebApiConfig class 设置了默认路由。

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 }
            );
        }
    }

这是controller

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

有几件事不对劲。

  1. 通过 Visual Studio 发布与通过上面的构建命令创建的构建 output 完全不同。
  2. 我在 Windows features/IIS/Application Development Features 下不见了![在此处输入图片描述
  3. 最后仍然出现安全错误,需要向目录添加 ACL 规则

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM