Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions MongoDB.Web/MongoDB.Web.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Providers\ConnectionUtils.cs" />
<Compile Include="Providers\MongoDBOutputCacheProvider.cs" />
<Compile Include="Providers\WebEvent.cs" />
<Compile Include="Providers\MongoDBWebEventProvider.cs" />
Expand All @@ -44,18 +42,23 @@
<Compile Include="Providers\MongoDBSessionStateProvider.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="MongoDB.Bson">
<HintPath>..\packages\mongocsharpdriver.1.2\lib\net35\MongoDB.Bson.dll</HintPath>
<Reference Include="MongoDB.Bson, Version=1.5.0.4566, Culture=neutral, PublicKeyToken=f686731cfb9cc103, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\mongocsharpdriver.1.5\lib\net35\MongoDB.Bson.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver">
<HintPath>..\packages\mongocsharpdriver.1.2\lib\net35\MongoDB.Driver.dll</HintPath>
<Reference Include="MongoDB.Driver, Version=1.5.0.4566, Culture=neutral, PublicKeyToken=f686731cfb9cc103, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\mongocsharpdriver.1.5\lib\net35\MongoDB.Driver.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Web.ApplicationServices" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
Expand Down
65 changes: 65 additions & 0 deletions MongoDB.Web/Providers/ConnectionUtils.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MongoDB.Driver;
using System.Collections.Specialized;
using System.Configuration;
using MongoDB.Bson;

namespace MongoDB.Web.Providers
{
/// <summary>
/// MongoDB connection helpers
/// </summary>
internal class ConnectionUtils
{
/// <summary>
/// Returns MongoDb collection specified in config setting ("collections")
/// or default one
/// </summary>
/// <param name="config"></param>
/// <param name="defaultCollection"></param>
/// <returns></returns>
public static MongoCollection<BsonDocument> GetCollection(NameValueCollection config, string defaultCollection)
{
return GetDatabase(config).GetCollection(config["collection"] ?? defaultCollection);
}

/// <summary>
/// Returns MongoDatabase instance using config settings.
/// If "database" setting is not specified then it's assumed that
/// connection string contains database name
/// </summary>
/// <param name="config"></param>
/// <returns></returns>
public static MongoDatabase GetDatabase(NameValueCollection config)
{
string database = config["database"];
return string.IsNullOrEmpty(database) ?
MongoDatabase.Create(GetConnectionString(config)) :
MongoServer.Create(GetConnectionString(config)).GetDatabase(database);
}

/// <summary>
/// Returns connection string to MongoDb by checking whether "connectionString"
/// contains connection string name or connection string itself
/// </summary>
/// <param name="config"></param>
/// <returns></returns>
public static string GetConnectionString(NameValueCollection config)
{
string connectionString = null;
var nameOrConnectionString = config["connectionString"];
if (!string.IsNullOrEmpty(nameOrConnectionString))
{
connectionString = nameOrConnectionString;
if (ConfigurationManager.ConnectionStrings[nameOrConnectionString] != null)
{
connectionString = ConfigurationManager.ConnectionStrings[nameOrConnectionString].ConnectionString;
}
}
return connectionString ?? "mongodb://localhost";
}
}
}
2 changes: 1 addition & 1 deletion MongoDB.Web/Providers/MongoDBMembershipProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ public override void Initialize(string name, NameValueCollection config)
throw new ProviderException("Configured settings are invalid: Hashed passwords cannot be retrieved. Either set the password format to different type, or set enablePasswordRetrieval to false.");
}

this.mongoCollection = MongoServer.Create(config["connectionString"] ?? "mongodb://localhost").GetDatabase(config["database"] ?? "ASPNETDB").GetCollection(config["collection"] ?? "Users");
this.mongoCollection = ConnectionUtils.GetCollection(config, "Users");
this.mongoCollection.EnsureIndex("ApplicationName");
this.mongoCollection.EnsureIndex("ApplicationName", "Email");
this.mongoCollection.EnsureIndex("ApplicationName", "Username");
Expand Down
2 changes: 1 addition & 1 deletion MongoDB.Web/Providers/MongoDBOutputCacheProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public override object Get(string key)

public override void Initialize(string name, NameValueCollection config)
{
this.mongoCollection = MongoServer.Create(config["connectionString"] ?? "mongodb://localhost").GetDatabase(config["database"] ?? "ASPNETDB").GetCollection(config["collection"] ?? "OutputCache");
this.mongoCollection = ConnectionUtils.GetCollection(config, "OutputCache");
this.mongoCollection.EnsureIndex("Key");
base.Initialize(name, config);
}
Expand Down
Loading