public string RenderRow(string operationName) { var show = HostContext.Config.DebugMode && //Show in DebugMode !MetadataPagesConfig.AlwaysHideInMetadata(operationName); //Hide When [Restrict(VisibilityTo = None)] // use a fully qualified path if WebHostUrl is set string baseUrl = Request.GetBaseUrl(); var opType = HostContext.Metadata.GetOperationType(operationName); var op = HostContext.Metadata.GetOperation(opType); var icons = CreateIcons(op); var opTemplate = StringBuilderCache.Allocate(); opTemplate.Append("<tr><th>" + icons + "{0}</th>"); foreach (var config in MetadataPagesConfig.AvailableFormatConfigs) { var uri = baseUrl.AppendPath(config.DefaultMetadataUri); if (MetadataPagesConfig.IsVisible(Request, config.Format.ToFormat(), operationName)) { show = true; opTemplate.Append($@"<td><a href=""{uri}?op={{0}}"">{config.Name.UrlEncode()}</a></td>"); } else { opTemplate.Append($"<td>{config.Name}</td>"); } } opTemplate.Append("</tr>"); return(show ? string.Format(StringBuilderCache.Retrieve(opTemplate), operationName) : ""); }
protected override void Render(System.Web.UI.HtmlTextWriter output) { var operationsPart = new TableTemplate { Title = MetadataFeature.Operations, Items = this.OperationNames, ForEachItem = RenderRow }.ToString(); var xsdsPart = ""; #if !NETSTANDARD2_0 xsdsPart = new ListTemplate { Title = "XSDS:", ListItemsIntMap = this.Xsds, ListItemTemplate = @"<li><a href=""?xsd={0}"">{1}</a></li>" }.ToString(); #endif var wsdlTemplate = StringBuilderCache.Allocate(); var soap11Config = MetadataPagesConfig.GetMetadataConfig("soap11") as SoapMetadataConfig; var soap12Config = MetadataPagesConfig.GetMetadataConfig("soap12") as SoapMetadataConfig; if (soap11Config != null || soap12Config != null) { wsdlTemplate.AppendLine("<h3>WSDLS:</h3>"); wsdlTemplate.AppendLine("<ul>"); if (soap11Config != null) { wsdlTemplate.AppendFormat( @"<li><a href=""{0}"">{0}</a></li>", soap11Config.WsdlMetadataUri); } if (soap12Config != null) { wsdlTemplate.AppendFormat( @"<li><a href=""{0}"">{0}</a></li>", soap12Config.WsdlMetadataUri); } wsdlTemplate.AppendLine("</ul>"); } var metadata = HostContext.GetPlugin <MetadataFeature>(); var pluginLinks = metadata.Sections.ContainsKey(MetadataFeature.PluginLinks) ? new ListTemplate { Title = MetadataFeature.PluginLinks, ListItemsMap = metadata.Sections[MetadataFeature.PluginLinks], ListItemTemplate = @"<li><a href=""{0}"">{1}</a></li>" }.ToString() : ""; var debugOnlyInfo = metadata.Sections.ContainsKey(MetadataFeature.DebugInfo) ? new ListTemplate { Title = MetadataFeature.DebugInfo, ListItemsMap = metadata.Sections[MetadataFeature.DebugInfo], ListItemTemplate = @"<li><a href=""{0}"">{1}</a></li>" }.ToString() : ""; var features = metadata.Sections.ContainsKey(MetadataFeature.AvailableFeatures) ? new ListTemplate { Title = MetadataFeature.AvailableFeatures, ListItemsMap = metadata.Sections[MetadataFeature.AvailableFeatures], ListItemTemplate = @"<li><a href=""{0}"">{1}</a></li>" }.ToString() : ""; var errorCount = HostContext.AppHost.StartUpErrors.Count; var plural = errorCount > 1 ? "s" : ""; var startupErrors = HostContext.Config.DebugMode && errorCount > 0 ? $"<div class='error-popup'><a href='?debug=requestinfo'>Review {errorCount} Error{plural} on Startup</a></div>" : ""; var renderedTemplate = HtmlTemplates.Format( HtmlTemplates.GetIndexOperationsTemplate(), this.Title, this.XsdServiceTypesIndex, operationsPart, xsdsPart, StringBuilderCache.Retrieve(wsdlTemplate), pluginLinks, debugOnlyInfo, Env.VersionString, startupErrors, features); output.Write(renderedTemplate); }