0 Comments

Current Multi-blog enabling LINQ to SQL BlogEngine.NET Provider. (Updated 3/12/10)

I have been asked for this code so that we can share the multi-blog solution that has been working for me for almost a year now.  This is the time to check it out and help make it work for yourself and others.  I’m going to continue to “dog food” this here.  Current version of BlogEngine.NET supported by this provider, as of this post, is 1.6.0.3.  Although I need to update my own site(s) from 1.6.0.1.

 

How will I update?

Mine is easy.  Drop in the new DLLs.

If I do a code “diff” and find the Web code to have changed recently (which I’m sure it did) I will copy those specific files to the Web folder.

 

How do you update from a cleanBlogEngine.NET 1.6.0.3code base?
  1. You should download the latest BE.NET code from codeplex and create a folder for the solution. 
  2. Extract the code from the zip into your solution folder. (…and follow the directions for setting up a stand-alone SQL Server Blog)
  3. Copy and unzip the BlogEngine.Linq2SQL.3-12-10.zip folder into the solution folder with the Core and Web projects.
  4. Add an existing Project to the solution, select the BlogEngine.Linq2Sql project.
  5. Verify the References (to project “BlogEngine.Core”)
  6. Add a reference to “BlogEngine.Linq2SQL” from the “BlogEngine.NET” Web site.
  7. Change Target Framework on BlogEngine.NET Web site to “.NET Framework 3.5
  8. Execute the SQL build script “Linq2SqlUpdate.sql” to add schema to support Multi-Blogs.
    • Make sure to run against the Database you created in Step 2.
  9. Assuming you are using the correct connection string, modify the Web.Config
    • blogProvider, membership, roleManager
    • See: Web.Config.xml

For those who like pictures to verify what you’re doing, here are a couple.  I’d rather have an installer but I’m not quite there yet.

Step 3:

Step3

Step 4:

Step4a Step4b Step4c

Step 5:

Step5

Step 6:

Step6 Step6b

Step 7:

Step7

Step 9:

1: <BlogEngine>
2: <blogProvider defaultProvider="Linq2SqlBlogProvider">
3: <providers>
4: <add name="Linq2SqlBlogProvider" type="BlogEngine.Linq2SQL.Linq2SqlBlogProvider, BlogEngine.Linq2SQL" connectionStringName="BlogEngine"/>
5: <add name="XmlBlogProvider" type="BlogEngine.Core.Providers.XmlBlogProvider, BlogEngine.Core"/>
6: <add name="DbBlogProvider" type="BlogEngine.Core.Providers.DbBlogProvider, BlogEngine.Core" connectionStringName="BlogEngine"/>
7: </providers>
8: </blogProvider>
9: </BlogEngine>
10:
11:
12: <membership defaultProvider="LinqMembershipProvider">
13: <providers>
14: <clear/>
15: <add name="LinqMembershipProvider" type="BlogEngine.Linq2SQL.LinqMembershipProvider, BlogEngine.Linq2SQL" passwordFormat="Hashed" connectionStringName="BlogEngine"/>
16: <add name="XmlMembershipProvider" type="BlogEngine.Core.Providers.XmlMembershipProvider, BlogEngine.Core" description="XML membership provider" passwordFormat="Hashed"/>
17: <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="BlogEngine" applicationName="BlogEngine"/>
18: <add name="DbMembershipProvider" type="BlogEngine.Core.Providers.DbMembershipProvider, BlogEngine.Core" passwordFormat="Hashed" connectionStringName="BlogEngine"/>
19: </providers>
20: </membership>
21: <roleManager defaultProvider="LinqRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".BLOGENGINEROLES">
22: <providers>
23: <clear/>
24: <add name="LinqRoleProvider" type="BlogEngine.Linq2SQL.LinqRoleProvider, BlogEngine.Linq2SQL" connectionStringName="BlogEngine"/>
25: <add name="XmlRoleProvider" type="BlogEngine.Core.Providers.XmlRoleProvider, BlogEngine.Core" description="XML role provider"/>
26: <add name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="BlogEngine" applicationName="BlogEngine"/>
27: <add name="DbRoleProvider" type="BlogEngine.Core.Providers.DbRoleProvider, BlogEngine.Core" connectionStringName="BlogEngine"/>
28: </providers>
29: </roleManager>

0 Comments

Received this e-mail today, it speaks for itself:

I just wanted to let you know that Markus Egger will be doing a free 4 stop upstate NY User Group tour Monday July 6 - Thursday July 9.

Markus will be discussing "The State of .NET":
What is the state of .NET today? Which of the many .NET technologies have gained traction? Which ones can you ignore for now? What is new in .NET 3.5 and the coming .NET 4.0? What other Microsoft technologies should you include in your development efforts? This event is It is designed for developers as well as (IT) decision makers. Specific prior knowledge is not required.

Topics will include:
  • Silverlight 2.0 and 3.0
  • WPF and Visual Styles
  • Expression Blend 3
  • Microsoft Surface
  • Windows Azure and Cloud Services
  • WCF
  • SOA

Markus Egger's Bio:
Markus Egger is the President and CSA of EPS Software Corp. and its associated brands and companies, such as CODE Magazine, CODE Online, Xiine, Tower 48, EPS Austria GmbH, JockTock, and others. EPS is a custom software development and consulting firm located in Houston, Texas (USA) and Salzburg (Austria). He specializes in consulting for advanced business applications built on the Microsoft platform. EPS does most of its development using Microsoft Visual Studio (.NET) and SQL Server (among other technologies). EPS has worked on numerous software projects for Fortune 500 companies including Philip Morris, NEC, Qualcomm, Shell and Microsoft. Markus has also worked on campus as a contractor for the Microsoft Visual Studio team.

Venues:

Buffalo - Monday July 6th, 6:00 PM - 8:30 PM:July.
Address:  Daemen College, Schenck Hall, Room 210 - 4380 Main Street, Amherst, NY  14226-3544
To register, send e-mail to:  events@wnydnug.org (Please include your first & last name by 12PM on Monday 7/6)

Rochester - Tuesday July 7th, 6:00 PM - 8:30 PM: http://www.vduny.org
Address:  Microsoft Office 100 Corporate Woods, Rochester, NY 14623
To register, send e-mail to:  BobNims@vduny.org

Syracuse - Wednesday July 8th, 6:00 PM - 8:30 PM: www.cnydevelopers.net
Address:  New Horizons, 6711 Towpath Road, East Syracuse, New York, 13057
Register at: www.cnydevelopers.net, or send e-mail to:  andy@beaulieu.com

Albany - Thursday July 9th, 6:30 PM - 8:30PM: www.tvug.net
Address:  VersaTrans Solutions, Inc., 4 British American Blvd, Latham, NY   12110
Register at: www.tvug.net, or send e-mail to:  president@tvug.net

0 Comments

This is what you see when attempting to rate a new post. Click on a Star to rate the post.  Notice the infinitesimally small rating that is generally added when creating a first post.  This may be something I did myself while trying to “fix” the Add a new Blog script.

image

 

These are the symptoms I could find so far, but I cannot isolate the DateTime property that is causing the Exception.

Line number (approximate:)

 image

SqlTypeException without enough detail for me to locate the offending data point.  What am I missing?

 image

For more information on this Project:  http://blogenginesqlserver.codeplex.com/.  I will update this post when a resolution is found.

0 Comments

 

DateTime Format for Blog Posts for BlogEngine.NET

...or wherever you want to standardize output formatting.

Here is a rather simple solution to my issue of Date Time formatting on my blog posts.  I noticed that as of a recent version of BlogEngine.NET, the Date looked something like this: "29. June 2008 09:00"  I wanted to change it to something more readable to my target readers, some very local, such as: "Sunday, June 29, 2008 09:00 AM".  Well, I might want to change it sometime, AND I would like to drop it into multiple Themes, so I decided to place the format in Web.Config AppSettings. I looked up my specific Format and added an appSetting.  Then I just replaced the code used in "PostView.ascx" and tested away.

Here's what you can do to implement this yourself.

  1. Go to .NET Framework Developer's Guide, Custom Date and Time Format Strings and/or locate your format string.
    • I used "dddd, MMMM dd, yyyy hh:mm tt"
  2. Create an appSettings key such as: Custom.DateFormat and assign your format to the value.
    • <add key="Custom.DateFormat" value="dddd, MMMM dd, yyyy hh:mm tt" />
  3. Now add the code to use the format string.
    • <%=Post.DateCreated.ToString(ConfigurationSettings.AppSettings["Custom.DateFormat"])%>
    • original: <%=Post.DateCreated.ToString("d. MMMM yyyy HH:mm") %>

 


This is what it looks like:

Web.Config ...

<add key="Custom.DateFormat" value="dddd, MMMM dd, yyyy hh:mm tt" />
</appSettings>

PostView.ascx ...

<span class="author">by <a href="<%=VirtualPathUtility.ToAbsolute(" mce_href="<%=VirtualPathUtility.ToAbsolute("~/") + "author/" + Post.Author %>.aspx"><%=Post.AuthorProfile != null ? Post.AuthorProfile.DisplayName : Post.Author %></a></span>
<span class="pubDate"><%=Post.DateCreated.ToString(ConfigurationSettings.AppSettings["Custom.DateFormat"])%></span>

DateTimeSnippet

 

You can add appSettings directly in Web.config, from IIS Manager, if ASP.NET configuration is available, or from "ASP.NET Web Site Administration Tool".  Although this solution was quick and dirty, the best answer may be to role localization into BlogEngine.NET using cultures.  This is not a specialty of mine so I would appreciate any suggestions on this topic.  It is likely only a few more lines of code for a "quick and dirty" approach but I'd rather make sure to do it right.