C#学习教程:以编程方式从Azure网站中检索站点URL是否可以从网站内部获取此URL(即从ASP.NET应用程序)?Environment和HttpRuntime类中有几个属性包含网站名称(例如“mysite”),因此可以轻松访问它们。当它不是默认值时,事情会变得复杂,但是例如访问站点的临时槽(站点URL类似于mysite-staging.azurewebsites.net)。所以我只是想知道是否有一种简单的方法可以直接获取该站点的URL。如果没有,则使用上述类之一获取站点名称,然后以某种方式检测站点插槽(例如,可以通过Azure门户的配置值设置)将是解决方案编辑(2/4/16):您可以获取来自appSetting/EnvironmentVariablewebsiteUrl的URL。如果您有一个设置,这还将为您提供一个自定义主机名。你可以用很少的方法来做到这一点。1.从HOSTNAME标头此选项仅在使用.azurewebsites.net请求站点时才有效。然后,您只需查看.azurewebsites.net.azurewebsites.net的HOSTNAME标头varhostName=Request.Headers["HOSTNAME"].ToString()2.从WEBSITE_SITE_NAME环境变量中,这只为您提供了一部分,因此您拥有附加.azurewebsites.net部分varhostName=string.Format("http://{0}.azurewebsites.net",Environment.ExpandEnvironmentVariables("%WEBSITE_SITE_NAME%"));3.在bindingInformation中使用MWAfrombindingInformation你可以使用下面的代码读取IIS配置文件applicationHost.config,然后读取你网站上的bindingInformation属性。你的函数可能看起来有点不一样,就像这样privatestaticstringGetBindings(){//获取站点名称stringsiteName=System.Web.Hosting.HostingEnvironment.SiteName;//从AppPool.config中获取站点部分foreach(Microsoft.Web.Administration.ConfigurationElementsiteinsitesSection.GetCollection()){//找到正确的站点if(String.Equals((string)site["name"],siteName,StringComparison.OrdinalIgnoreCase)){//对于每个绑定,查看它们是否基于http并返回端口和协议如果(bindingInfo.IndexOf(".azurewebsites.net",StringComparison.InvariantCultureIgnoreCase)>-1){返回bindingInfo.Split(':')[2];}}}}返回空;}就个人而言,我会使用数字2。此外,您可以使用Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME"),它将返回完整的URL("http://{your-site-name}.azurewebsites.net"),没有字符串需要操纵。要查看环境变量中可用属性的完整列表,只需在SCMPowerShell调试控制台中键入Get-ChildItemEnv:它会被使用,需要了解更多有关C#的学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
