【发布时间】:2017-08-22 04:36:35
【问题描述】:
我们目前有一个旧的 WCF 服务,我真的不想维护,但有几个客户端仍然可以访问。我们目前在 Azure 的 WEB API 2 中运行我们所有的 API 服务。为了实现向后兼容性,我希望使用属性路由在 WEB API 中模拟 WCF 路由,如下所示:
[RoutePrefix("registration.svc")]
public class RegistrationDeprecatedController : ApiController
{
[HttpPost]
[Route("login")]
public async Task<HttpResponseMessage> Login(CredentialModel creds)
{...
在本地,这就像一场梦。一旦我发布到 Azure AppService,我得到的只是 404 未找到。有问题的具体路线:
/registration.svc/login
我怀疑 IIS 托管具有关联的 .svc 路由文件以将请求作为 WCF 调用来处理。在网上进行的广泛搜索未能找到任何关于如何更改此关联的信息,甚至无法确认是否是这种情况。任何关于如何修复或替代解决方案的想法将不胜感激。
更新
找到了解决方案,但并不完美。发现可以直接连接到AppService实例上的IIS并更改Handler Mappings。这并不完美,因为在创建新实例或部署槽时需要手动更改,而我更愿意自动化整个过程。
如果其他人想这样做,您可以按照benjamin perkins 的教程进行操作。我确实必须在 Windows 10 上安装一个 IIS Manager for remote administration 扩展,但它才能正常工作。我删除了与 *.svc 关联的所有映射,并且路由现在可以正常工作了。
【问题讨论】:
-
为该特定路径添加一个处理程序,以便您可以在 iis 处理它之前拦截它
标签: c# wcf azure asp.net-web-api2 azure-web-app-service