Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Working on adding Glimpse to NuGet.org

  • Loading branch information...
commit 691a27af5152759be9c5fe9b640de275724ccb3c 1 parent 8fdabe1
@anurse anurse authored
View
60 Website/App_Start/AppActivator.cs
@@ -15,8 +15,6 @@
using NuGetGallery.Infrastructure.Jobs;
using NuGetGallery.Jobs;
using NuGetGallery.Migrations;
-using StackExchange.Profiling;
-using StackExchange.Profiling.MVCHelpers;
using WebActivator;
using WebBackgrounder;
@@ -34,7 +32,6 @@ public static class AppActivator
public static void PreStart()
{
NinjectPreStart();
- MiniProfilerPreStart();
ElmahPreStart();
}
@@ -42,7 +39,6 @@ public static void PostStart()
{
// Get configuration from the kernel
var config = Container.Kernel.Get<IConfiguration>();
- MiniProfilerPostStart();
DbMigratorPostStart();
BackgroundJobsPostStart(config);
AppPostStart();
@@ -108,23 +104,6 @@ private static void DynamicDataPostStart(IConfiguration configuration)
Registration.Register(RouteTable.Routes, configuration);
}
- private static void MiniProfilerPreStart()
- {
- MiniProfilerEF.Initialize();
- DynamicModuleUtility.RegisterModule(typeof(MiniProfilerStartupModule));
- GlobalFilters.Filters.Add(new ProfilingActionFilter());
- }
-
- private static void MiniProfilerPostStart()
- {
- var copy = ViewEngines.Engines.ToList();
- ViewEngines.Engines.Clear();
- foreach (var item in copy)
- {
- ViewEngines.Engines.Add(new ProfilingViewEngine(item));
- }
- }
-
private static void NinjectPreStart()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
@@ -136,44 +115,5 @@ private static void NinjectStop()
{
NinjectBootstrapper.ShutDown();
}
-
- private class MiniProfilerStartupModule : IHttpModule
- {
- public void Init(HttpApplication context)
- {
- context.BeginRequest += (sender, e) => MiniProfiler.Start();
-
- context.AuthorizeRequest += (sender, e) =>
- {
- bool stopProfiling;
- var httpContext = HttpContext.Current;
-
- if (httpContext == null)
- {
- stopProfiling = true;
- }
- else
- {
- // Temporarily removing until we figure out the hammering of request we saw.
- //var userCanProfile = httpContext.User != null && HttpContext.Current.User.IsInRole(Const.AdminRoleName);
- var requestIsLocal = httpContext.Request.IsLocal;
-
- //stopProfiling = !userCanProfile && !requestIsLocal
- stopProfiling = !requestIsLocal;
- }
-
- if (stopProfiling)
- {
- MiniProfiler.Stop(true);
- }
- };
-
- context.EndRequest += (sender, e) => MiniProfiler.Stop();
- }
-
- public void Dispose()
- {
- }
- }
}
}
View
14 Website/App_Start/ContainerBindings.cs
@@ -8,10 +8,12 @@
using System.Web.Mvc;
using AnglicanGeek.MarkdownMailer;
using Elmah;
+using Glimpse.Core.Extensibility;
using Microsoft.WindowsAzure.ServiceRuntime;
using Microsoft.WindowsAzure.Storage;
using Ninject;
using Ninject.Modules;
+using NuGetGallery.Diagnostics;
using NuGetGallery.Infrastructure;
namespace NuGetGallery
@@ -273,6 +275,18 @@ public override void Load()
Bind<IPackageVersionsQuery>()
.To<PackageVersionsQuery>()
.InRequestScope();
+
+ // Diagnostics
+ var diagService = new GlimpseDiagnosticsService();
+ Bind<IDiagnosticsService>()
+ .ToConstant(diagService)
+ .InSingletonScope();
+ Bind<IInspector>()
+ .ToConstant(diagService)
+ .InSingletonScope();
+ Bind<IRuntimePolicy>()
+ .To<NuGetRuntimePolicy>()
+ .InSingletonScope();
}
public static bool IsDeployedToCloud
View
37 Website/Controllers/PackagesController.cs
@@ -10,6 +10,7 @@
using System.Web.Mvc;
using NuGet;
using NuGetGallery.AsyncFileUpload;
+using NuGetGallery.Diagnostics;
using PoliteCaptcha;
namespace NuGetGallery
@@ -32,6 +33,7 @@ public partial class PackagesController : Controller
private readonly IEntitiesContext _entitiesContext;
private readonly IIndexingService _indexingService;
private readonly ICacheService _cacheService;
+ private readonly IDiagnosticsService _diagnostics;
public PackagesController(
IPackageService packageService,
@@ -45,7 +47,8 @@ public partial class PackagesController : Controller
IEntitiesContext entitiesContext,
IConfiguration config,
IIndexingService indexingService,
- ICacheService cacheService)
+ ICacheService cacheService,
+ IDiagnosticsService diagnostics)
{
_packageService = packageService;
_uploadFileService = uploadFileService;
@@ -59,6 +62,7 @@ public partial class PackagesController : Controller
_config = config;
_indexingService = indexingService;
_cacheService = cacheService;
+ _diagnostics = diagnostics;
}
[Authorize]
@@ -177,25 +181,30 @@ public virtual ActionResult DisplayPackage(string id, string version)
public virtual ActionResult ListPackages(string q, string sortOrder = null, int page = 1, bool prerelease = false)
{
- if (page < 1)
+ IQueryable<Package> packageVersions;
+ int totalHits;
+ using (_diagnostics.Time("Querying Search Index"))
{
- page = 1;
- }
+ if (page < 1)
+ {
+ page = 1;
+ }
- IQueryable<Package> packageVersions = _packageService.GetPackagesForListing(prerelease);
+ packageVersions = _packageService.GetPackagesForListing(prerelease);
- q = (q ?? "").Trim();
+ q = (q ?? "").Trim();
- if (String.IsNullOrEmpty(sortOrder))
- {
- // Determine the default sort order. If no query string is specified, then the sortOrder is DownloadCount
- // If we are searching for something, sort by relevance.
- sortOrder = q.IsEmpty() ? Constants.PopularitySortOrder : Constants.RelevanceSortOrder;
+ if (String.IsNullOrEmpty(sortOrder))
+ {
+ // Determine the default sort order. If no query string is specified, then the sortOrder is DownloadCount
+ // If we are searching for something, sort by relevance.
+ sortOrder = q.IsEmpty() ? Constants.PopularitySortOrder : Constants.RelevanceSortOrder;
+ }
+
+ var searchFilter = GetSearchFilter(q, sortOrder, page, prerelease);
+ packageVersions = _searchService.Search(packageVersions, searchFilter, out totalHits);
}
- var searchFilter = GetSearchFilter(q, sortOrder, page, prerelease);
- int totalHits;
- packageVersions = _searchService.Search(packageVersions, searchFilter, out totalHits);
if (page == 1 && !packageVersions.Any())
{
// In the event the index wasn't updated, we may get an incorrect count.
View
37 Website/Diagnostics/GlimpseDiagnosticsService.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Web;
+using Glimpse.Core.Extensibility;
+using Glimpse.Core.Message;
+using NuGet;
+
+namespace NuGetGallery.Diagnostics
+{
+ public class GlimpseDiagnosticsService : IDiagnosticsService, IInspector
+ {
+ public static readonly TimelineCategory NuGetGallery = new TimelineCategory("NuGet Gallery", "#CCCC00", "#FFFF00");
+
+ private IInspectorContext _context;
+
+ public IDisposable Time(string title, string subTitle)
+ {
+ var timer = _context.TimerStrategy();
+ var time = timer.Start();
+ return new DisposableAction(() =>
+ {
+ var result = timer.Stop(time);
+ _context.MessageBroker.Publish(
+ new GlimpseMessage()
+ .AsTimedMessage(result)
+ .AsTimelineMessage(NuGetGallery, eventSubText: subTitle));
+ });
+ }
+
+ public void Setup(IInspectorContext context)
+ {
+ _context = context;
+ }
+ }
+}
View
18 Website/Diagnostics/GlimpseMessage.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Glimpse.Core.Message;
+
+namespace NuGetGallery.Diagnostics
+{
+ public class GlimpseMessage : MessageBase, ITimelineMessage
+ {
+ public TimelineCategory EventCategory { get; set; }
+ public string EventName { get; set; }
+ public string EventSubText { get; set; }
+ public TimeSpan Duration { get; set; }
+ public TimeSpan Offset { get; set; }
+ public DateTime StartTime { get; set; }
+ }
+}
View
20 Website/Diagnostics/IDiagnosticsService.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace NuGetGallery.Diagnostics
+{
+ public interface IDiagnosticsService
+ {
+ IDisposable Time(string title, string subTitle);
+ }
+
+ public static class DiagnosticsServiceExtensions
+ {
+ public static IDisposable Time(this IDiagnosticsService self, string title)
+ {
+ return self.Time(title, subTitle: null);
+ }
+ }
+}
View
31 Website/Diagnostics/NinjectGlimpseServiceLocator.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using Glimpse.Core.Framework;
+using Ninject;
+
+namespace NuGetGallery.Diagnostics
+{
+ public class NinjectGlimpseServiceLocator : IServiceLocator
+ {
+ private IKernel _kernel;
+
+ public NinjectGlimpseServiceLocator() : this(Container.Kernel) { }
+
+ public NinjectGlimpseServiceLocator(IKernel kernel)
+ {
+ _kernel = kernel;
+ }
+
+ public ICollection<T> GetAllInstances<T>() where T : class
+ {
+ return _kernel.GetAll<T>().ToList();
+ }
+
+ public T GetInstance<T>() where T : class
+ {
+ return _kernel.TryGet<T>();
+ }
+ }
+}
View
27 Website/Diagnostics/NuGetRuntimePolicy.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Web;
+using Glimpse.Core.Extensibility;
+
+namespace NuGetGallery.Diagnostics
+{
+ public class NuGetRuntimePolicy : IRuntimePolicy
+ {
+ public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
+ {
+ var context = policyContext.GetRequestContext<HttpContextBase>();
+ if (context.Request.IsLocal || (context.Request.IsSecureConnection && context.User.IsInRole(Constants.AdminRoleName)))
+ {
+ return RuntimePolicy.On;
+ }
+ return RuntimePolicy.PersistResults;
+ }
+
+ public RuntimeEvent ExecuteOn
+ {
+ get { return RuntimeEvent.BeginRequest; }
+ }
+ }
+}
View
30 Website/GlimpseSecurityPolicy.cs
@@ -0,0 +1,30 @@
+/*
+// Uncomment this class to provide custom runtime policy for Glimpse
+
+using System.Web;
+using Glimpse.Core;
+using Glimpse.Core.Extensibility;
+
+namespace NuGetGallery
+{
+ public class GlimpseSecurityPolicy:IRuntimePolicy
+ {
+ public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
+ {
+ // You can perform a check like the one below to control Glimpse's permissions within your application.
+ // var context = policyContext.GetRequestContext<HttpContextBase>();
+ // if (!context.User.IsInRole("Administrator"))
+ // {
+ // return RuntimePolicy.Off;
+ // }
+
+ return RuntimePolicy.On;
+ }
+
+ public RuntimeEvent ExecuteOn
+ {
+ get { return RuntimeEvent.EndRequest; }
+ }
+ }
+}
+*/
View
21 Website/Services/PackageService.cs
@@ -4,7 +4,7 @@
using System.Linq;
using System.Runtime.Versioning;
using NuGet;
-using StackExchange.Profiling;
+using NuGetGallery.Diagnostics;
namespace NuGetGallery
{
@@ -16,14 +16,16 @@ public class PackageService : IPackageService
private readonly IEntityRepository<PackageRegistration> _packageRegistrationRepository;
private readonly IEntityRepository<Package> _packageRepository;
private readonly IEntityRepository<PackageStatistics> _packageStatsRepository;
+ private readonly IDiagnosticsService _diagnostics;
public PackageService(
- ICryptographyService cryptoService,
- IEntityRepository<PackageRegistration> packageRegistrationRepository,
- IEntityRepository<Package> packageRepository,
- IEntityRepository<PackageStatistics> packageStatsRepository,
- IEntityRepository<PackageOwnerRequest> packageOwnerRequestRepository,
- IIndexingService indexingService)
+ ICryptographyService cryptoService,
+ IEntityRepository<PackageRegistration> packageRegistrationRepository,
+ IEntityRepository<Package> packageRepository,
+ IEntityRepository<PackageStatistics> packageStatsRepository,
+ IEntityRepository<PackageOwnerRequest> packageOwnerRequestRepository,
+ IIndexingService indexingService,
+ IDiagnosticsService diagnostics)
{
_cryptoService = cryptoService;
_packageRegistrationRepository = packageRegistrationRepository;
@@ -31,6 +33,7 @@ public class PackageService : IPackageService
_packageStatsRepository = packageStatsRepository;
_packageOwnerRequestRepository = packageOwnerRequestRepository;
_indexingService = indexingService;
+ _diagnostics = diagnostics;
}
public Package CreatePackage(IPackage nugetPackage, User user, bool commitChanges = true)
@@ -63,7 +66,7 @@ public void DeletePackage(string id, string version, bool commitChanges = true)
var packageRegistration = package.PackageRegistration;
_packageRepository.DeleteOnCommit(package);
-
+
UpdateIsLatest(packageRegistration);
if (packageRegistration.Packages.Count == 0)
@@ -207,7 +210,7 @@ public void PublishPackage(Package package, bool commitChanges = true)
public void AddDownloadStatistics(Package package, string userHostAddress, string userAgent, string operation)
{
- using (MiniProfiler.Current.Step("Updating package stats"))
+ using (_diagnostics.Time("Updating package statistics"))
{
_packageStatsRepository.InsertOnCommit(
new PackageStatistics
View
10 Website/ViewModels/PackageListViewModel.cs
@@ -1,7 +1,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
-using StackExchange.Profiling;
namespace NuGetGallery
{
@@ -18,12 +17,9 @@ public class PackageListViewModel
bool includePrerelease)
{
// TODO: Implement actual sorting
- IEnumerable<ListPackageItemViewModel> items;
- using (MiniProfiler.Current.Step("Querying and mapping packages to list"))
- {
- items = packages.ToList()
- .Select(pv => new ListPackageItemViewModel(pv, needAuthors: false));
- }
+ IEnumerable<ListPackageItemViewModel> items = packages.ToList()
+ .Select(pv => new ListPackageItemViewModel(pv, needAuthors: false));
+
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = totalCount;
View
4 Website/Views/Shared/Layout.cshtml
@@ -1,4 +1,4 @@
-@using StackExchange.Profiling
+@using Glimpse.Mvc.Html
<!DOCTYPE html>
<html lang="en" class="static ">
<head>
@@ -10,7 +10,6 @@
<link href="@Url.Content("~/favicon.ico")" rel="shortcut icon" type="image/x-icon" />
<script src="@Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")"></script>
<script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")"></script>
- @MiniProfiler.RenderIncludes()
@ViewHelpers.AnalyticsScript()
@RenderSection("TopScripts", required: false)
</head>
@@ -82,5 +81,6 @@
</footer>
</div>
@RenderSection("BottomScripts", required: false)
+ @Html.GlimpseClient()
</body>
</html>
View
567 Website/Web.config
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
@@ -7,139 +7,148 @@
http://www.iis.net/downloads/microsoft/url-rewrite
-->
<configuration>
- <configSections>
- <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <sectionGroup name="elmah">
- <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
- <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
- <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
- <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
- </sectionGroup>
- <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere"/>
- </configSections>
- <appSettings>
- <add key="reCAPTCHA::PrivateKey" value="6LcebdwSAAAAAI5dI90LpPMFGKDxdCt6fjwEwMut" /> <!-- development only key, override on live site -->
- <add key="reCAPTCHA::PublicKey" value="6LcebdwSAAAAAFI06sH9RRb2VP1HFCjYpg74lKG7" /> <!-- development only, overridde on live site -->
- <add key="webpages:Version" value="2.0.0.0" />
- <add key="PreserveLoginUrl" value="true" />
- <add key="ClientValidationEnabled" value="true" />
- <add key="UnobtrusiveJavaScriptEnabled" value="true" />
- <add key="Gallery.ReleaseBranch" value="" />
- <add key="Gallery.ReleaseName" value="" />
- <add key="Gallery.ReleaseSha" value="" />
- <add key="Gallery.ReleaseTime" value="" />
-
- <!-- If you're running in Azure, we suggest you set these in your .cscfg file. -->
- <add key="Gallery.AzureStorageConnectionString" value="UseDevelopmentStorage=true" />
- <add key="Gallery.AzureStatisticsConnectionString" value=""/>
- <add key="Gallery.AzureCdnHost" value="" />
- <add key="Gallery.GoogleAnalyticsPropertyId" value="" />
- <add key="Gallery.PackageStoreType" value="" />
- <add key="Gallery.SiteRoot" value="http://nuget.org/" />
- <add key="Gallery.FacebookAppId" value="" />
- <add key="Gallery.GalleryOwnerName" value="NuGet Gallery" />
- <add key="Gallery.GalleryOwnerEmail" value="nugetgallery@outercurve.org" />
- <add key="Gallery.ReadOnlyMode" value=""/>
- <add key="Gallery.SmtpHost" value="" />
- <add key="Gallery.SmtpPort" value="" />
- <add key="Gallery.SmtpUsername" value="" />
- <add key="Gallery.SmtpPassword" value="" />
- <add key="Gallery.UseSmtp" value="true" />
- </appSettings>
- <connectionStrings>
- <!-- If you don't have Visual Studio 2012 installed, use this connection string instead of the LocalDB one for local testing -->
- <!--<add name="NuGetGallery" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=NuGetGallery;Integrated Security=SSPI" providerName="System.Data.SqlClient" />-->
- <add name="NuGetGallery" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=NuGetGallery;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
- </connectionStrings>
- <elmah>
- <!--
+ <configSections>
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+ <sectionGroup name="elmah">
+ <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
+ <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
+ <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/>
+ <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
+ </sectionGroup>
+ <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere"/>
+ <section name="glimpse" type="Glimpse.Core.Configuration.Section, Glimpse.Core"/>
+ </configSections>
+ <appSettings>
+ <add key="reCAPTCHA::PrivateKey" value="6LcebdwSAAAAAI5dI90LpPMFGKDxdCt6fjwEwMut"/>
+ <!-- development only key, override on live site -->
+ <add key="reCAPTCHA::PublicKey" value="6LcebdwSAAAAAFI06sH9RRb2VP1HFCjYpg74lKG7"/>
+ <!-- development only, overridde on live site -->
+ <add key="webpages:Version" value="2.0.0.0"/>
+ <add key="PreserveLoginUrl" value="true"/>
+ <add key="ClientValidationEnabled" value="true"/>
+ <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
+ <add key="Gallery.ReleaseBranch" value=""/>
+ <add key="Gallery.ReleaseName" value=""/>
+ <add key="Gallery.ReleaseSha" value=""/>
+ <add key="Gallery.ReleaseTime" value=""/>
+ <!-- If you're running in Azure, we suggest you set these in your .cscfg file. -->
+ <add key="Gallery.AzureStorageConnectionString" value="UseDevelopmentStorage=true"/>
+ <add key="Gallery.AzureStatisticsConnectionString" value=""/>
+ <add key="Gallery.AzureCdnHost" value=""/>
+ <add key="Gallery.GoogleAnalyticsPropertyId" value=""/>
+ <add key="Gallery.PackageStoreType" value=""/>
+ <add key="Gallery.SiteRoot" value="http://nuget.org/"/>
+ <add key="Gallery.FacebookAppId" value=""/>
+ <add key="Gallery.GalleryOwnerName" value="NuGet Gallery"/>
+ <add key="Gallery.GalleryOwnerEmail" value="nugetgallery@outercurve.org"/>
+ <add key="Gallery.ReadOnlyMode" value=""/>
+ <add key="Gallery.SmtpHost" value=""/>
+ <add key="Gallery.SmtpPort" value=""/>
+ <add key="Gallery.SmtpUsername" value=""/>
+ <add key="Gallery.SmtpPassword" value=""/>
+ <add key="Gallery.UseSmtp" value="true"/>
+ </appSettings>
+ <connectionStrings>
+ <!-- If you don't have Visual Studio 2012 installed, use this connection string instead of the LocalDB one for local testing -->
+ <!--<add name="NuGetGallery" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=NuGetGallery;Integrated Security=SSPI" providerName="System.Data.SqlClient" />-->
+ <add name="NuGetGallery" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=NuGetGallery;Integrated Security=SSPI" providerName="System.Data.SqlClient"/>
+ </connectionStrings>
+ <elmah>
+ <!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on remote access and securing ELMAH.
-->
- <security allowRemoteAccess="true" />
- <errorFilter>
- <test>
- <equal binding="HttpStatusCode" value="404" type="Int32" />
- </test>
- </errorFilter>
- <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="NuGetGallery" />
- </elmah>
- <!-- Ensure only Admins may access elmah.axd -->
- <location path="elmah.axd" inheritInChildApplications="false">
- <system.web>
- <httpHandlers>
- <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
- </httpHandlers>
- <authorization>
- <allow roles="Admins" />
- <deny users="*" />
- </authorization>
- <!--
- See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
- more information on using ASP.NET authorization securing ELMAH.
+ <security allowRemoteAccess="true"/>
+ <errorFilter>
+ <test>
+ <equal binding="HttpStatusCode" value="404" type="Int32"/>
+ </test>
+ </errorFilter>
+ <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="NuGetGallery"/>
+ </elmah>
+ <!-- Ensure only Admins may access elmah.axd/glimpse.axd -->
+ <location path="elmah.axd" inheritInChildApplications="false">
+ <system.web>
+ <httpHandlers>
+ <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
+ </httpHandlers>
<authorization>
- <allow roles="admin" />
- <deny users="*" />
+ <allow roles="Admins"/>
+ <deny users="*"/>
</authorization>
- -->
- </system.web>
- <system.webServer>
- <handlers>
- <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
- <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
- </handlers>
- </system.webServer>
- </location>
- <!-- Allow some very specific set of name to be used with the ~/package and ~/api/vX/package/ routes -->
- <location path="packages">
- <system.web>
- <httpHandlers configSource="Web.ForbiddenHandlers.config" />
- </system.web>
- <system.webServer>
- <security>
- <requestFiltering>
- <fileExtensions allowUnlisted="true">
- <remove fileExtension=".config" />
- <remove fileExtension=".rules" />
- <remove fileExtension=".resources" />
- </fileExtensions>
- </requestFiltering>
- </security>
- </system.webServer>
- </location>
- <location path="api/v1/package">
- <system.web>
- <httpHandlers configSource="Web.ForbiddenHandlers.config" />
- </system.web>
- <system.webServer>
- <security>
- <requestFiltering>
- <fileExtensions allowUnlisted="true">
- <remove fileExtension=".config" />
- <remove fileExtension=".rules" />
- <remove fileExtension=".resources" />
- </fileExtensions>
- </requestFiltering>
- </security>
- </system.webServer>
- </location>
- <location path="api/v2/package">
- <system.web>
- <httpHandlers configSource="Web.ForbiddenHandlers.config" />
- </system.web>
- <system.webServer>
- <security>
- <requestFiltering>
- <fileExtensions allowUnlisted="true">
- <remove fileExtension=".config" />
- <remove fileExtension=".rules" />
- <remove fileExtension=".resources" />
- </fileExtensions>
- </requestFiltering>
- </security>
- </system.webServer>
- </location>
- <!--
+ </system.web>
+ <system.webServer>
+ <handlers>
+ <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode"/>
+ </handlers>
+ </system.webServer>
+ </location>
+ <location path="glimpse.axd" inheritInChildApplications="false">
+ <system.web>
+ <httpHandlers>
+ <add path="glimpse.axd" verb="GET,POST" type="Glimpse.AspNet.HttpHandler,Glimpse.AspNet"/>
+ </httpHandlers>
+ <authorization>
+ <allow roles="Admins"/>
+ <deny users="*"/>
+ </authorization>
+ </system.web>
+ <system.webServer>
+ <handlers>
+ <add name="Glimpse" path="glimpse.axd" verb="GET,POST" type="Glimpse.AspNet.HttpHandler,Glimpse.AspNet" preCondition="integratedMode"/>
+ </handlers>
+ </system.webServer>
+ </location>
+ <!-- Allow some very specific set of name to be used with the ~/package and ~/api/vX/package/ routes -->
+ <location path="packages">
+ <system.web>
+ <httpHandlers configSource="Web.ForbiddenHandlers.config"/>
+ </system.web>
+ <system.webServer>
+ <security>
+ <requestFiltering>
+ <fileExtensions allowUnlisted="true">
+ <remove fileExtension=".config"/>
+ <remove fileExtension=".rules"/>
+ <remove fileExtension=".resources"/>
+ </fileExtensions>
+ </requestFiltering>
+ </security>
+ </system.webServer>
+ </location>
+ <location path="api/v1/package">
+ <system.web>
+ <httpHandlers configSource="Web.ForbiddenHandlers.config"/>
+ </system.web>
+ <system.webServer>
+ <security>
+ <requestFiltering>
+ <fileExtensions allowUnlisted="true">
+ <remove fileExtension=".config"/>
+ <remove fileExtension=".rules"/>
+ <remove fileExtension=".resources"/>
+ </fileExtensions>
+ </requestFiltering>
+ </security>
+ </system.webServer>
+ </location>
+ <location path="api/v2/package">
+ <system.web>
+ <httpHandlers configSource="Web.ForbiddenHandlers.config"/>
+ </system.web>
+ <system.webServer>
+ <security>
+ <requestFiltering>
+ <fileExtensions allowUnlisted="true">
+ <remove fileExtension=".config"/>
+ <remove fileExtension=".rules"/>
+ <remove fileExtension=".resources"/>
+ </fileExtensions>
+ </requestFiltering>
+ </security>
+ </system.webServer>
+ </location>
+ <!--
For a description of web.config changes for .NET 4.5 see http://go.microsoft.com/fwlink/?LinkId=235367.
The following attributes can be set on the <httpRuntime> tag.
@@ -147,150 +156,156 @@
<httpRuntime targetFramework="4.5" />
</system.Web>
-->
- <system.web>
- <compilation debug="false" targetFramework="4.5">
- <assemblies>
- <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add assembly="System.Web.Routing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- </assemblies>
- </compilation>
- <authentication mode="Forms">
- <forms loginUrl="~/Users/Account/LogOn" timeout="2880" />
- </authentication>
- <pages controlRenderingCompatibilityVersion="4.0">
- <namespaces>
- <add namespace="System.Web.Helpers" />
- <add namespace="System.Web.Mvc" />
- <add namespace="System.Web.Mvc.Ajax" />
- <add namespace="System.Web.Mvc.Html" />
- <add namespace="System.Web.Routing" />
- <add namespace="System.Web.WebPages" />
- </namespaces>
- </pages>
- <httpRuntime maxQueryStringLength="12000" maxRequestLength="2000000000" requestPathInvalidCharacters="&lt;,&gt;,*,%,:,\,?" />
- <httpModules>
- <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
- <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
- <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
- <add name="AsyncFileUpload" type="NuGetGallery.AsyncFileUpload.AsyncFileUploadModule, NuGetGallery.Website" />
- </httpModules>
- <httpHandlers />
- <customErrors mode="RemoteOnly" defaultRedirect="~/Errors/error.html">
- <error statusCode="404" redirect="~/Errors/404" />
- </customErrors>
- <sessionState mode="Off" />
- </system.web>
- <system.webServer>
- <modules runAllManagedModulesForAllRequests="true">
- <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
- <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
- <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
- <add name="AsyncFileUpload" type="NuGetGallery.AsyncFileUpload.AsyncFileUploadModule, NuGetGallery.Website" preCondition="managedHandler"/>
- </modules>
- <validation validateIntegratedModeConfiguration="false" />
- <handlers />
- <httpErrors errorMode="Custom">
- <remove statusCode="404" subStatusCode="-1" />
- <error statusCode="404" path="/Errors/404" responseMode="ExecuteURL" />
- <remove statusCode="500" subStatusCode="-1" />
- <error statusCode="500" path="/Errors/Error.html" responseMode="ExecuteURL" />
- </httpErrors>
- <security>
- <requestFiltering>
- <requestLimits maxQueryString="12000" />
- </requestFiltering>
- </security>
- <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
- <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
- <dynamicTypes>
- <add mimeType="text/*" enabled="true" />
- <add mimeType="message/*" enabled="true" />
- <add mimeType="application/javascript" enabled="true" />
- <add mimeType="application/x-javascript" enabled="true" />
- <add mimetype="application/json" enabled="true" />
- <add mimetype="application/atom+xml" enabled="true" />
- <add mimetype="application/atom+xml;charset=utf-8" enabled="true" />
- <add mimeType="*/*" enabled="false" />
- </dynamicTypes>
- <staticTypes>
- <add mimeType="text/*" enabled="true" />
- <add mimeType="message/*" enabled="true" />
- <add mimeType="application/javascript" enabled="true" />
- <add mimeType="application/x-javascript" enabled="true" />
- <add mimetype="application/json" enabled="true" />
- <add mimetype="application/atom+xml" enabled="true" />
- <add mimetype="application/atom+xml;charset=utf-8" enabled="true" />
- <add mimeType="*/*" enabled="false" />
- </staticTypes>
- </httpCompression>
- <urlCompression doStaticCompression="true" doDynamicCompression="true" />
- <rewrite>
- <rules>
- <rule name="Legacy feed root URL" stopProcessing="true">
- <match url="^$" />
- <conditions>
- <add input="{HTTP_HOST}" pattern="^packages([0-9]?)\.nuget.org$" />
- </conditions>
- <action type="Redirect" url="http://packages.nuget.org/v1/FeedService.svc" redirectType="Permanent" />
- </rule>
- <rule name="Legacy image icon URL" stopProcessing="true">
- <match url="^media/default/packages/([a-z0-9_][a-z0-9._-]*)/([0-9.]+)/[\w._ -]+\.([a-z]+)$" />
- <action type="Redirect" url="https://nugetgallery.blob.core.windows.net/icons/{R:1}.{R:2}.{R:3}" redirectType="Permanent" />
- </rule>
- <rule name="Curated Feed Download URL" stopProcessing="true">
- <match url="^api/v2/curated-feeds/package/" />
- <action type="None" />
- </rule>
- <rule name="Curated Feed" stopProcessing="true">
- <match url="^api/v2/curated-feeds/([^/]+)(.*)$" />
- <action type="Rewrite" url="api/v2/curated-feed{R:2}?name={R:1}" />
- </rule>
- </rules>
- </rewrite>
- </system.webServer>
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <dependentAssembly>
- <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
- <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
- </dependentAssembly>
- <dependentAssembly>
- <assemblyIdentity name="RouteMagic" publicKeyToken="84b59be021aa4cee" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-0.2.2.2" newVersion="0.2.2.2" />
- </dependentAssembly>
- <dependentAssembly>
- <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
- </dependentAssembly>
- <dependentAssembly>
- <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
- </dependentAssembly>
- <dependentAssembly>
- <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
- </dependentAssembly>
- <dependentAssembly>
- <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
- </dependentAssembly>
- <dependentAssembly>
- <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
- </dependentAssembly>
- </assemblyBinding>
- </runtime>
- <system.serviceModel>
- <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
- </system.serviceModel>
- <entityFramework>
- <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
- <parameters>
- <parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" />
- </parameters>
- </defaultConnectionFactory>
- </entityFramework>
-</configuration>
+ <system.web>
+ <compilation debug="true" targetFramework="4.5">
+ <assemblies>
+ <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+ <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+ <add assembly="System.Web.Routing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+ <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+ <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+ </assemblies>
+ </compilation>
+ <authentication mode="Forms">
+ <forms loginUrl="~/Users/Account/LogOn" timeout="2880"/>
+ </authentication>
+ <pages controlRenderingCompatibilityVersion="4.0">
+ <namespaces>
+ <add namespace="System.Web.Helpers"/>
+ <add namespace="System.Web.Mvc"/>
+ <add namespace="System.Web.Mvc.Ajax"/>
+ <add namespace="System.Web.Mvc.Html"/>
+ <add namespace="System.Web.Routing"/>
+ <add namespace="System.Web.WebPages"/>
+ </namespaces>
+ </pages>
+ <httpRuntime maxQueryStringLength="12000" maxRequestLength="2000000000" requestPathInvalidCharacters="&lt;,&gt;,*,%,:,\,?"/>
+ <httpModules>
+ <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
+ <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
+ <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
+ <add name="AsyncFileUpload" type="NuGetGallery.AsyncFileUpload.AsyncFileUploadModule, NuGetGallery.Website"/>
+ <add name="Glimpse" type="Glimpse.AspNet.HttpModule,Glimpse.AspNet"/>
+ </httpModules>
+ <customErrors mode="RemoteOnly" defaultRedirect="~/Errors/error.html">
+ <error statusCode="404" redirect="~/Errors/404"/>
+ </customErrors>
+ <sessionState mode="Off"/>
+ </system.web>
+ <system.webServer>
+ <modules runAllManagedModulesForAllRequests="true">
+ <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler"/>
+ <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler"/>
+ <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler"/>
+ <add name="AsyncFileUpload" type="NuGetGallery.AsyncFileUpload.AsyncFileUploadModule, NuGetGallery.Website" preCondition="managedHandler"/>
+ </modules>
+ <validation validateIntegratedModeConfiguration="false"/>
+ <httpErrors errorMode="Custom">
+ <remove statusCode="404" subStatusCode="-1"/>
+ <error statusCode="404" path="/Errors/404" responseMode="ExecuteURL"/>
+ <remove statusCode="500" subStatusCode="-1"/>
+ <error statusCode="500" path="/Errors/Error.html" responseMode="ExecuteURL"/>
+ </httpErrors>
+ <security>
+ <requestFiltering>
+ <requestLimits maxQueryString="12000"/>
+ </requestFiltering>
+ </security>
+ <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
+ <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
+ <dynamicTypes>
+ <add mimeType="text/*" enabled="true"/>
+ <add mimeType="message/*" enabled="true"/>
+ <add mimeType="application/javascript" enabled="true"/>
+ <add mimeType="application/x-javascript" enabled="true"/>
+ <add mimetype="application/json" enabled="true"/>
+ <add mimetype="application/atom+xml" enabled="true"/>
+ <add mimetype="application/atom+xml;charset=utf-8" enabled="true"/>
+ <add mimeType="*/*" enabled="false"/>
+ </dynamicTypes>
+ <staticTypes>
+ <add mimeType="text/*" enabled="true"/>
+ <add mimeType="message/*" enabled="true"/>
+ <add mimeType="application/javascript" enabled="true"/>
+ <add mimeType="application/x-javascript" enabled="true"/>
+ <add mimetype="application/json" enabled="true"/>
+ <add mimetype="application/atom+xml" enabled="true"/>
+ <add mimetype="application/atom+xml;charset=utf-8" enabled="true"/>
+ <add mimeType="*/*" enabled="false"/>
+ </staticTypes>
+ </httpCompression>
+ <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
+ <rewrite>
+ <rules>
+ <rule name="Legacy feed root URL" stopProcessing="true">
+ <match url="^$"/>
+ <conditions>
+ <add input="{HTTP_HOST}" pattern="^packages([0-9]?)\.nuget.org$"/>
+ </conditions>
+ <action type="Redirect" url="http://packages.nuget.org/v1/FeedService.svc" redirectType="Permanent"/>
+ </rule>
+ <rule name="Legacy image icon URL" stopProcessing="true">
+ <match url="^media/default/packages/([a-z0-9_][a-z0-9._-]*)/([0-9.]+)/[\w._ -]+\.([a-z]+)$"/>
+ <action type="Redirect" url="https://nugetgallery.blob.core.windows.net/icons/{R:1}.{R:2}.{R:3}" redirectType="Permanent"/>
+ </rule>
+ <rule name="Curated Feed Download URL" stopProcessing="true">
+ <match url="^api/v2/curated-feeds/package/"/>
+ <action type="None"/>
+ </rule>
+ <rule name="Curated Feed" stopProcessing="true">
+ <match url="^api/v2/curated-feeds/([^/]+)(.*)$"/>
+ <action type="Rewrite" url="api/v2/curated-feed{R:2}?name={R:1}"/>
+ </rule>
+ </rules>
+ </rewrite>
+ </system.webServer>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
+ <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="RouteMagic" publicKeyToken="84b59be021aa4cee" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-0.2.2.2" newVersion="0.2.2.2"/>
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0"/>
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0"/>
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+ <system.serviceModel>
+ <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
+ </system.serviceModel>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
+ <parameters>
+ <parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True"/>
+ </parameters>
+ </defaultConnectionFactory>
+ </entityFramework>
+ <glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd" serviceLocatorType="NuGetGallery.Diagnostics.NinjectGlimpseServiceLocator, NuGetGallery.Website">
+ <runtimePolicies>
+ <ignoredTypes>
+ <add type="Glimpse.Core.Policy.ControlCookiePolicy, Glimpse.Core"/>
+ </ignoredTypes>
+ </runtimePolicies>
+ </glimpse>
+</configuration>
View
21 Website/Website.csproj
@@ -73,6 +73,15 @@
<HintPath>..\packages\EntityFramework.4.3.1\lib\net40\EntityFramework.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
+ <Reference Include="Glimpse.AspNet">
+ <HintPath>..\packages\Glimpse.AspNet.1.0.0\lib\net40\Glimpse.AspNet.dll</HintPath>
+ </Reference>
+ <Reference Include="Glimpse.Core">
+ <HintPath>..\packages\Glimpse.1.0.0\lib\net40\Glimpse.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="Glimpse.Mvc3">
+ <HintPath>..\packages\Glimpse.Mvc3.1.0.0\lib\net40\Glimpse.Mvc3.dll</HintPath>
+ </Reference>
<Reference Include="Lucene.Net">
<HintPath>..\packages\Lucene.Net.2.9.2.2\lib\net40\Lucene.Net.dll</HintPath>
</Reference>
@@ -128,12 +137,6 @@
<Reference Include="Microsoft.WindowsFabric.Data.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\WindowsAzure.Caching.1.7.0.0\lib\net35-full\Microsoft.WindowsFabric.Data.Common.dll</HintPath>
</Reference>
- <Reference Include="MiniProfiler">
- <HintPath>..\packages\MiniProfiler.2.0.0-rc1\lib\net40\MiniProfiler.dll</HintPath>
- </Reference>
- <Reference Include="MiniProfiler.EntityFramework">
- <HintPath>..\packages\MiniProfiler.EF.2.0.1-rc1\lib\net40\MiniProfiler.EntityFramework.dll</HintPath>
- </Reference>
<Reference Include="MvcHaack.Ajax">
<HintPath>..\packages\MvcHaack.Ajax.MVC4.2.0.0.0\lib\net40\MvcHaack.Ajax.dll</HintPath>
</Reference>
@@ -285,6 +288,10 @@
<Compile Include="DataServices\V2FeedPackage.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="Diagnostics\GlimpseDiagnosticsService.cs" />
+ <Compile Include="Diagnostics\GlimpseMessage.cs" />
+ <Compile Include="Diagnostics\IDiagnosticsService.cs" />
+ <Compile Include="Diagnostics\NinjectGlimpseServiceLocator.cs" />
<Compile Include="Entities\CuratedFeed.cs" />
<Compile Include="Entities\CuratedPackage.cs" />
<Compile Include="Entities\GallerySetting.cs" />
@@ -293,6 +300,7 @@
<Compile Include="Entities\ReadOnlyModeException.cs" />
<Compile Include="Filters\CacheFilter.cs" />
<Compile Include="Filters\CompressFilter.cs" />
+ <Compile Include="GlimpseSecurityPolicy.cs" />
<Compile Include="Helpers\FileHelper.cs" />
<Compile Include="Helpers\QuietLog.cs" />
<Compile Include="Helpers\StringHelper.cs" />
@@ -300,6 +308,7 @@
<Compile Include="Helpers\TreeView.cs" />
<Compile Include="ImageResult.cs" />
<Compile Include="Infrastructure\AzureEntityList.cs" />
+ <Compile Include="Diagnostics\NuGetRuntimePolicy.cs" />
<Compile Include="Infrastructure\ReadOnlyModeErrorFilter.cs" />
<Compile Include="Infrastructure\TableErrorLog.cs" />
<Compile Include="AsyncFileUpload\AsyncFileUploadExtensions.cs" />
View
6 Website/packages.config
@@ -8,6 +8,9 @@
<package id="elmah.corelibrary" version="1.2.2" targetFramework="net40" />
<package id="elmah.sqlserver" version="1.2" />
<package id="EntityFramework" version="4.3.1" />
+ <package id="Glimpse" version="1.0.0" targetFramework="net45" />
+ <package id="Glimpse.AspNet" version="1.0.0" targetFramework="net45" />
+ <package id="Glimpse.Mvc3" version="1.0.0" targetFramework="net45" />
<package id="jQuery" version="1.6.2" />
<package id="jQuery.Validation" version="1.8.1" />
<package id="Lucene.Net" version="2.9.2.2" targetFramework="net45" />
@@ -21,9 +24,6 @@
<package id="Microsoft.Data.OData.Contrib" version="5.1.0.51119" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="1.7.0.3" targetFramework="net45" />
- <package id="MiniProfiler" version="2.0.0-rc1" />
- <package id="MiniProfiler.EF" version="2.0.1-rc1" />
- <package id="MiniProfiler.MVC3" version="1.9.1" />
<package id="Modernizr" version="2.0.6" />
<package id="MvcHaack.Ajax.MVC4" version="2.0.0.0" targetFramework="net45" />
<package id="MvcTreeView" version="1.4" targetFramework="net40" />
Please sign in to comment.
Something went wrong with that request. Please try again.