如何从ASP.NET Core网站向Azure移动应用服务进行身份验证?
可行的解决方案:ASP.NET Core网站连接Azure Mobile App服务
嘿,我太懂你之前误发布覆盖原有服务的糟心经历了,下面给你几个靠谱的方案,既能让新网站和Mobile App服务正常通信,又绝对不会搞坏现有的移动应用支持:
方案1:部署独立的App Service实例(最推荐)
这是最安全稳妥的做法,把你的ASP.NET Core 2.0网站放到一个全新的Azure App Service里,和现有的gonzo.azurewebsites.net完全分开:
- 登录Azure门户,创建一个新的App Service实例(比如命名为
gonzo-web) - 把ASP.NET Core网站部署到这个新实例里,用Visual Studio发布、Azure CLI或者GitHub Actions都可以
- 在网站代码里,用Azure Mobile App的客户端SDK和原服务通信,就像你的Cordova/Xamarin应用一样:
先安装NuGet包Microsoft.Azure.Mobile.Client,然后初始化客户端并调用API:
这样两个服务各自独立,完全不会互相干扰,网站就是Mobile App服务的一个新客户端而已。// 初始化Mobile客户端 var mobileClient = new MobileServiceClient("https://gonzo.azurewebsites.net/"); // 调用服务端API示例(假设你有个TodoItem表) var todoItems = await mobileClient.GetTable<TodoItem>().ToListAsync();
方案2:在原有Mobile App服务中添加子应用
如果不想额外开新的服务实例,Azure App Service支持虚拟应用(Virtual Applications),可以把网站部署到原服务的子路径下(比如https://gonzo.azurewebsites.net/web):
- 登录Azure门户,找到你的
gonzoApp Service,进入「配置」→「路径映射」 - 添加一个虚拟应用:虚拟路径填
/web,物理路径设为site\wwwroot\web,记得勾选「启用预加载」(如果需要) - 发布网站的时候,在Visual Studio的发布设置里,把「虚拟应用程序」设为
/web;或者用Azure CLI部署时指定子目录 - 这样原Mobile App服务的API(比如
/api/*)依然正常给移动应用提供服务,你的网站在子路径下运行,也能直接调用同域名下的API,还能享受到相同的认证配置。
方案3:迁移Mobile App API到ASP.NET Core(长期规划)
如果之后想统一技术栈,可以把原Mobile App服务的业务逻辑迁移到你的ASP.NET Core项目里:
- 原Azure Mobile App服务其实是基于ASP.NET的,你可以把API控制器、数据访问逻辑逐步迁移到ASP.NET Core 2.0项目中
- 保留原有的API路由(比如
/api/TodoItem),这样现有的Cordova/Xamarin应用不用修改任何代码就能继续工作 - 把合并后的项目部署到新的App Service实例,或者替换原服务(但一定要先备份好原服务再操作)
关键注意事项
- 身份验证兼容:如果你的Mobile App服务用了App Service Authentication(Easy Auth),网站也要配置对应的认证方式,比如获取JWT令牌后再调用API,确保权限一致
- 发布前仔细核对:每次发布网站前,确认部署目标是新的App Service实例或者子路径,别再误选原服务的根目录了
内容的提问来源于stack exchange,提问作者lucorn
相关产品推荐
相关产品推荐

