Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Discussion of open issues, suggestions and bugs regarding ADO.NET provider for SQLite
acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Mon 04 Feb 2013 16:23

I'm new, Sorry if this is redundant question, does someone know how to link an ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...)

Here is the starting point :
1) Start VS2012
2) New project ... "ASP.NET MVC4 Web Application"
3) WEB Application (Razor)

Need to switch database to SQLite? I've tried the instruction on the ASP.NET Provider Model Support page here http://www.devart.com/dotconnect/sqlite/docs/ but I can't get it to work.

Shalex
Site Admin
Posts: 9543
Joined: Thu 14 Aug 2008 12:44

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by Shalex » Tue 05 Feb 2013 15:29

The situation with the SimpleMembership support in dotConnect providers is described at http://forums.devart.com/viewtopic.php?f=2&t=24826. We will post here when the corresponding functionality is implemented in dotConnect for SQLite.

Shalex
Site Admin
Posts: 9543
Joined: Thu 14 Aug 2008 12:44

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by Shalex » Fri 01 Mar 2013 10:20

New version of dotConnect for SQLite 4.5 is released!
It can be downloaded from http://www.devart.com/dotconnect/sqlite/download.html (trial version) or from Registered Users' Area (for users with active subscription only).
For more information, please refer to http://forums.devart.com/viewtopic.php?f=29&t=26104.

This build includes the ExtendedMembership (SimpleMembership) provider support: http://www.devart.com/dotconnect/sqlite ... orial.html.

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Wed 13 Mar 2013 17:23

Shalex Thanks... I followed the MVC4 example and was able to make everything work with the latest code.

Unfortunately I can't get the ASP.NET Website configuration tool to work with the new database! In VS2012 Click on Project and select ASP.NET Configuration. If I can't configure the secure database it's not much use.

My company has purchased Devart SQLite 4.5 That is what I'm using.

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Wed 13 Mar 2013 18:32

Please disregard the last post I found my answer here: http://weblogs.asp.net/jgalloway/archiv ... lates.aspx

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Thu 14 Mar 2013 18:12

Could someone point me to a way of using the Roles and membership API

<membership defaultProvider="SQLiteExtendedMembershipProvider"/>
<roleManager enabled="true" defaultProvider="SQLiteExtendedRoleProvider"/>

This doesn't work...

var roles = (SQLiteExtendedRoleProvider)Roles.Provider;
var membership = (SQLiteExtendedMembershipProvider)Membership.Provider;

in fact I can't find any SQLiteExtendedRoleProvider or SQLiteExtendedMembershipProvider in the Devart tools. Am I missing something?

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Thu 14 Mar 2013 20:53

Here's the work around for

This doesn't work...

var roles = (SQLiteExtendedRoleProvider)Roles.Provider;
var membership = (SQLiteExtendedMembershipProvider)Membership.Provider;

This works ...
var roles = System.Web.Security.Roles.GetRolesForUser();
var membership = System.Web.Security.Membership.GetUser();

Pinturiccio
Devart Team
Posts: 2420
Joined: Wed 02 Nov 2011 09:44

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by Pinturiccio » Mon 18 Mar 2013 13:04

acooper wrote:This works ...
var roles = System.Web.Security.Roles.GetRolesForUser();
var membership = System.Web.Security.Membership.GetUser();
System.Web.Security.Membership and System.Web.Security.Roles are static classes for ASP.NET 2.0 providers.
To work with SQLiteExtendedMembershipProvider you should use the WebMatrix.WebData.WebSecurity static class. To work with SqlLiteExtendedRoleProvider, System.Web.Security.Roles is used.

You can also use the approach you've described:
acooper wrote: This doesn't work...

var roles = (SQLiteExtendedRoleProvider)Roles.Provider;
var membership = (SQLiteExtendedMembershipProvider)Membership.Provider;
What exactly does not work? In our environment everything works fine. If possible, please create and send us a small test project and describe the steps for reproducing the issue.
Probably, you tried to use methods defined in the MembershipProvider class for the membership variable having the SQLiteExtendedMembershipProvider type. The fact is that ExtendedMembershipProvider inherits from the MembershipProvider class, but SQLiteExtendedMembershipProvider does not implement methods inherited from MembershipProvider.
For more information, please refer to http://msdn.microsoft.com/en-us/library ... 11%29.aspx

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Mon 18 Mar 2013 17:50

I tried to upload a project... it was just your tutorial created in VS2012 unfortunately even in the zipped up it was 6mb which exceeds your 2mb limit.

Here is my specific problem. I have dcsqlite45pro.exe purchased version.

The version I just downloaded and installed has
Devart.Data.SQLite.Web.Providers.SQLiteMembershipProvider
Devart.Data.SQLite.Web.Providers.SQLiteRolesProvider

but does not have
Devart.Data.SQLite.Web.Providers.SQLiteExtendedMembershipProvider
Devart.Data.SQLite.Web.Providers.SQLiteExtendedRolesProvider

Pinturiccio
Devart Team
Posts: 2420
Joined: Wed 02 Nov 2011 09:44

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by Pinturiccio » Tue 19 Mar 2013 13:11

dotConnect for SQLite has two Devart.Data.SQLite.Web.dll assemblies. One assembly has version 4.5.202.0 and is intended for ASP.NET 2.0. This assembly is placed in GAC and it is likely that you attached this very assembly to your project.
Devart.Data.SQLite.Web.dll assembly version 4.5.202.0 has no SQLiteExtendedMembershipProvider and SQLiteExtendedRolesProvider classes.

There is also Devart.Data.SQLite.Web.dll assembly version 4.5.202.4 located in the %Program Files%\DevartDevart\dotConnect\SQLite\NET4 folder. This assembly is intended for work with .NET Framework 4 and this is the assembly that has to be added to your project. In Visual Studio 2012 the reference to the assembly of this version can be added only via the 'Browse' option of the 'Reference Manager' dialog box.

We have added the Devart.Data.SQLite.Web.dll assembly version 4.5.202.4 to the GAC and starting from the next public build there will be both versions of the Devart.Data.SQLite.Web.dll assembly in the GAC.

You may also find useful the following information http://www.devart.com/dotconnect/sqlite ... orial.html

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Tue 19 Mar 2013 21:26

Thanks, now ever thing is working on the localhost!

But my server throws this error:
Parser Error Message: Default Role Provider could not be found.
Source Error:
Line 29: <customErrors mode="Off" />
Line 30: <membership defaultProvider="SQLiteExtendedMembershipProvider" />
Line 31: <roleManager enabled="true" defaultProvider="SQLiteExtendedRoleProvider" />
Line 32:
Line 33: <compilation targetFramework="4.5"><assemblies><add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /></assemblies></compilation>

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Wed 20 Mar 2013 12:30

I have compiled the Licenses and placed the dll in the bin. Devart.Data.dll, Devart.Data.SQLite.dll and Devart.Data.SQLite.Web.dll are all in the bin and everything is where it should be on the server. If I comment out <roleManager enabled="true" defaultProvider="SQLiteExtendedRoleProvider" /> then the website will run, but it crashes as soon as I try to access the database.

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Wed 20 Mar 2013 18:58

I think this might be the problem...

I'm publishing the website using VS2012 Web Deploy. During the publishing I get a message (see jpg attached) "The provider of this Database Devart.Data.SQLite is not supported for publishing".

The Server now give me this error:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Pinturiccio
Devart Team
Posts: 2420
Joined: Wed 02 Nov 2011 09:44

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by Pinturiccio » Thu 21 Mar 2013 15:31

When you install dotConnect for SQLite on your computer, the SQLiteExtendedMembershipProvider and SQLiteExtendedRoleProvider providers are registered in the machine.config file. Then in the web.config file of your application, specify that SQLiteExtendedMembershipProvider and SQLiteExtendedRoleProvider described in the machine.config file should be used.
When you deploy your application on the web server, the machine.config file of the web server has no records defining SQLiteExtendedMembershipProvider and SQLiteExtendedRoleProvider. This issue can be solved the following way.
Add SQLiteExtendedMembershipProvider and SQLiteExtendedRoleProvider in your web.config file. Replace this record in the web.config file:

Code: Select all

<membership defaultProvider="SQLiteExtendedMembershipProvider" />
<roleManager enabled="true" defaultProvider="SQLiteExtendedRoleProvider" />
With this one:

Code: Select all

<roleManager enabled="true" defaultProvider="SQLiteExtendedRoleProvider">
  <providers>
    <add name="SQLiteExtendedRoleProvider" type="Devart.Data.SQLite.Web.Providers.SQLiteExtendedRoleProvider, 
Devart.Data.SQLite.Web, Version=4.5.202.4, Culture=neutral, PublicKeyToken=09af7300eec23701"
    description="dotConnect for SQLite extended role provider"
    connectionStringName="SQLiteServices" useridcolumn="UserId"
    usernamecolumn="UserName" usertablename="UserProfile" />
  </providers>
</roleManager>
<membership defaultProvider="SQLiteExtendedMembershipProvider">
  <providers>
    <add name="SQLiteExtendedMembershipProvider" 
type="Devart.Data.SQLite.Web.Providers.SQLiteExtendedMembershipProvider, Devart.Data.SQLite.Web, 
Version=4.5.202.4, Culture=neutral, PublicKeyToken=09af7300eec23701"
    description="dotConnect for SQLite extended membership provider"
    connectionStringName="SQLiteServices" useridcolumn="UserId"
    usernamecolumn="UserName" usertablename="UserProfile" />
  </providers>
</membership>
acooper wrote:I'm publishing the website using VS2012 Web Deploy. During the publishing I get a message (see jpg attached) "The provider of this Database Devart.Data.SQLite is not supported for publishing".
Publish Web Application supports only the SQL Server database.

acooper
Posts: 19
Joined: Mon 04 Feb 2013 15:51

Re: Connect ASP.NET MVC4 site to SQLite (Membership, roles, profiles, sessions, etc...) model

Post by acooper » Thu 21 Mar 2013 18:45

I already tried that 2 days ago! In fact your code is missing
<remove name="SQLiteExtendedMembershipProvider"/> and <remove name="SQLiteExtendedRoleProvider"/> !

What do you mean... Web publishing only supports SQL server? I'm using MSDeploy to manually deploy my app to a local server. Does that mean if I use MSDeploy your assembly's won't work?

Post Reply