我现在正在阅读一些关于将Web Apps和API应用程序部署到Azure的教程.但是,我仍然不确定为什么你会使用一个而不是另一个.
我可以使用API控制器创建一个新的.NET解决方案并将其部署为Web应用程序,那么为什么我要特别要求API应用程序?这些是专门针对ASP.NET Web API进行优化的吗?Web Apps用于提供HTML?
我在Azure上运行了一个MobileService,并决定创建一个新服务并自己迁移代码.新服务属于新类型:Azure Mobile App Service.
目前我有身份验证工作,可以进行迁移/更新数据库.我正在关注TodoItem示例.我现在想要创建自己的自定义API,它可以轻松地在MobileService上运行,但我无法在Azure Mobile App上运行它:/
我已经关注了这两个链接web-Api-routing和app-service-mobile-backend.我现在有以下内容:
我创建了一个新的控制器:
[MobileAppController]
public class TestController : ApiController
{
// GET api/Test
[Route("api/Test/completeAll")]
[HttpPost]
public async Task<ihttpactionresult> completeAll(string info)
{
return Ok(info + info + info);
}
}
Run Code Online (Sandbox Code Playgroud)
在mobileApp.cs中,我根据后端添加了以下代码:
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
Run Code Online (Sandbox Code Playgroud)
另外我根据web-api-routing安装了以下软件包:
Microsoft.AspNet.WebApi.WebHost
Run Code Online (Sandbox Code Playgroud)
和来自客户的电话:
string t = await App.MobileService.InvokeApiAsync<string,string>("Test/completeAll", "hej");
Run Code Online (Sandbox Code Playgroud)
调试显示,它是正确的URL:
{方法:POST,RequestUri:' https ://xxxxxxx.azurewebsites.net/api/Test/completeAll',版本:1.1,内容:System.Net.Http.StringContent,标题:{X-ZUMO-FEATURES:AT X -ZUMO-INSTALLATION-ID:e9b359df-d15e-4119-a4ad-afe3031d8cd5 X-ZUMO-AUTH:xxxxxxxxxxx接受:application/json User-Agent:ZUMO/2.0 User-Agent:(lang = Managed; os = Windows Store; os_version = - ; arch = …
我有一个我在Azure App Service实例上运行的Java Web应用程序.为了部署它,我使用了一个带有.war文件的Bitbucket repo.当我向该repo提交一个新的.war文件时,它应该由该服务自动部署.但是,通常情况下,我必须通过FTP重新启动,重新部署甚至上传.war文件,才能成功完成部署.
我有一个驻留在此服务中的Jetty实例,因此我的.war文件被命名ROOT.war.AFAIK,当上传到服务(无论是通过Bitbucket还是FTP)时,这个.war文件应该被解压缩到同一目录中,即/site/wwwroot/webapps.就我而言,这不会发生.Web应用程序可以独立使用ROOT.war文件/site/wwwroot/webapps.每隔一段时间,我会得到一个ROOT文件夹/site/wwwroot/webapps,有两个默认文件index.jsp和background.png.我没有任何想法导致ROOT文件夹与这些默认文件一起出现的原因.我唯一的线索是,在我更改环境变量后,它发生了几次.
此外,ROOT文件夹显示空服务器文件后,我可以重新部署应用程序的唯一方法是ROOT通过FTP或门户网站中提供的控制台手动删除此文件夹,然后我的重新部署请求成功使用我的Web应用程序.
那么,如果不够清楚,我的问题是这里发生了什么?我无法从我面临的行为中做出任何改变.我觉得我盲目地使用这个Azure服务,并且当出现问题时无法解决任何问题.是否有任何资源可以解释部署Web应用程序时后台发生的情况?
当我构建并运行我的Azure Web API时,我得到了一个很好的swaggerUI.
我想将API添加到Azure API Management.
为此,我需要一个URL或swagger.json文件.
Swashbuckle把文件放在哪里?
或者,如果它在运行中生成它,我怎样才能访问它?
我正在尝试远程调试使用Visual Studio 2017 Professional部署为Azure应用服务的Asp.Net核心Web应用程序(带有Web API)项目.
按照此处记录的说明进行操作.基本上,使用服务器资源管理器 - >应用程序服务 - >附加调试器
此外,启用了所述的必要防火墙端口.我打开的是TCP(4022,4023)和UDP(3702).此外,确保远程调试器应用程序位于Windows防火墙中允许的应用程序列表中.防火墙步骤的文档.
尽管有所有设置,但我收到了以下错误
System.Runtime.InteropServices.COMException(0x89710023):无法连接到名为"essamplepoc2.azurewebsites.net"的Microsoft Visual Studio远程调试器.Visual Studio 2017远程调试程序(MSVSMON.EXE)似乎没有在远程计算机上运行.这可能是因为防火墙阻止了与远程计算机的通信.有关配置远程调试的帮助,请参阅"帮助".Microsoft.VisualStudio.Web.Azure.MicrosoftWeb.Operations.RemoteDiagnosticsSessionBase.ConnectToServer(String)中的Microsoft.VisualStudio.Debugger.Interop.Internal.IDebuggerInternal120.ConnectToServer(String szServerName,VsDebugRemoteConnectOptions [] pConnectOptions,CONNECT_REASON ConnectReason,Int32 fIncrementUsageCount,IDebugCoreServer3&ppServer) site,String user,String password)
任何建议都会有所帮助.
我是API管理的新手.我创建了一个Basic WEB API并托管到API APP(App服务).URL正在按预期工作,它正在返回数据.即http://xyz.azurewebsites.net/api/webapi
但是当我在API管理中添加API应用程序时,我正在添加带有Extra后缀的不同URL我正在添加,但是当我尝试在浏览器中打开链接时 - > https://abc.azure-api.net/God我收到以下错误
{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
如果它没有API APP的问题那么它不应该与API管理.如果我错过了什么,请指导我.
NB - >我尝试在fiddler中添加订阅密钥,它的不同问题即将到来.但要访问URL,它基本上不需要订阅密钥.
我们有一个应用服务计划 (P2v2: 1),部署了 6 个 .Net Core Web API 和 2 个 Web 作业。
最近,1 个 Web API 定期开始发出 (502) Bad Gateway 错误。该错误似乎会自行解决,或者我们需要重新启动应用服务。
我们看到的平均 CPU % 为 42.x %,平均内存 % 约为 32.x %
这真的让我们抓狂,因为我们没有看到任何应用程序错误。
我们急需提示来解决此问题,因为它正在生产中运行。
我已将Serilog集成到使用Asp.Net Core 2.0开发的WebApi项目中.这是以下配置代码Program.cs:
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
我设法在调试期间完美地查看日志.
现在我在Azure中将服务部署为API应用程序.
应该使用什么配置来通过Azure Portal中的Log Stream扩展来查看生产环境中的日志?
我创建了一个OWIN托管WebAPI 2.还有一个Web应用程序(AngularJS),它使用API并充当客户端.
我已经添加了必要的代码CORS到Startup.cs,并主持它本地IIS比客户的不同端口上,并确认其修复Cors问题.
然后,我将这两个应用程序部署到Azure(我已将两个应用程序都放在Azure上作为Web应用程序,我也尝试将OWIN放到当前处于预览状态的Azure API中)但是 - 预检请求现在失败了(没有Access-Control-Allow-Origin出现在响应).
问:我不知道Azure的某些特定内容吗?为什么OWIN在部署时没有提供此标头,但是它正在使用localhost?我没有在应用程序的Azure刀片设置的属性窗口中看到任何约束.
笔记:
关于我正在使用的设置的一些细节:
Owin,WebAPI2,Ninject,SignalR*Startup.cs的相关部分:
public void Configuration(IAppBuilder appBuilder)
{
appBuilder.UseCors(CorsOptions.AllowAll);
HttpConfiguration config = new HttpConfiguration();
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
//bind IClientsNotifier with method returning singleton instance of hub
var ninjectKernel = NinjectWebCommon.GetKernel();
ninjectKernel.Bind<MySignalRHub>().ToSelf().InSingletonScope();
ninjectKernel.Bind<QueryStringBearerAuthorizeAttribute>().ToSelf();
GlobalHost.DependencyResolver = new NinjectSignalRDependencyResolver(ninjectKernel);
appBuilder.Map(
"/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration();
map.RunSignalR(hubConfiguration); …Run Code Online (Sandbox Code Playgroud) 我开发了几个Microsoft Azure功能.我想使用带防火墙的网关来使我的Azure功能可用并仅使用一个公共IP进行保护.
有没有办法将Azure功能与Azure应用程序网关或API管理一起使用?
在这种情况下,最好的方法是什么?
azure-api-apps ×10
azure ×8
c# ×3
.net ×1
asp.net ×1
cors ×1
deployment ×1
java ×1
jetty ×1
serilog ×1
swagger ×1
swashbuckle ×1