You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FASTCGI在IIS部署Django Channels应用时WSS出现404错误

解决IIS部署Django Channels时WSS 404问题

1. 先确认IIS开了WebSocket协议

  • 打开服务器管理器→添加角色和功能→找到Web服务器(IIS)→应用程序开发,勾选WebSocket协议,安装后重启IIS。
  • IIS默认没开启WebSocket,不打开的话WSS请求根本没法被正确处理。

2. 检查URL重写规则是否漏了WSS路径

IIS部署Django靠URL重写转发请求,得保证/ws/开头的WSS请求被正确转到ASGI服务器:

  • 打开站点的URL重写模块,加一条规则:
    • 匹配URL模式:^ws/(.*)
    • 动作类型选重写
    • 重写URL填http://localhost:8000/ws/{R:1}(8000换成你ASGI服务器的监听端口,比如Daphne的端口)
    • 把这条规则的优先级调得比静态文件、WSGI转发规则高,别让WSS请求被错发到不处理WebSocket的WSGI应用。

3. 验证ASGI服务器能处理WebSocket请求

  • 不管用Daphne还是Uvicorn,启动命令要绑定正确的地址和端口,比如:
    daphne -b 0.0.0.0 -p 8000 your_project.asgi:application
    
    必须绑定0.0.0.0不能只绑127.0.0.1,不然IIS没法转发请求过来。
  • 本地直接测ws://localhost:8000/ws/start-quiz/,能连上说明ASGI层面没问题;连不上就去查Channels的路由配置。

4. 核对Channels路由配置

确保routing.py里有/ws/start-quiz/的路由:

# routing.py
from django.urls import re_path
from . import consumers

websocket_urlpatterns = [
    re_path(r'ws/start-quiz/$', consumers.YourConsumer.as_asgi()),
]

再确认asgi.py正确导入了这个路由:

# asgi.py
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
import your_app.routing

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AuthMiddlewareStack(
        URLRouter(
            your_app.routing.websocket_urlpatterns
        )
    ),
})

5. Memurai与Channels的兼容性检查

用Memurai替代Redis,虽然兼容Redis协议,但要确认:

  • Memurai服务在运行,端口是配置里的6370,本地访问的话注意防火墙别拦截。
  • 用memurai-cli ping测试,返回PONG说明服务正常。
  • 如果Memurai设了密码,要在CHANNEL_LAYERS的CONFIG里加"password": "你的密码"。

6. 排查日志找细节

  • 看IIS日志(默认在C:\inetpub\logs\LogFiles),找到WSS请求的记录,看404的具体原因,比如是不是转发到了错误的后端。
  • 看ASGI服务器的日志,有没有WSS请求进来:没进来就是IIS转发规则有问题;进来了但返回404,就是路由不匹配或者消费者配置错了。

内容的提问来源于stack exchange,提问作者Simple Sarfi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:04:55