Using ConfigurableActiveDirectoryMembershipProvider in Spring.Net - spring.net

I want to use ConfigurableActiveDirectoryMembershipProvider in my code. I have my current settings as
<add name="XXXXMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershi pProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="XXXXConnectionString"
connectionUsername="user"
connectionPassword="password"
connectionProtection="Secure" />
I have changed this to
<add connectionStringName=""
name="XXXXDomainADMembershipProvider"
type="Spring.Web.Providers.MembershipProviderAdapter, Spring.Web" />
and added in to my spring config file as
<object id="XXXXDomainADMembershipProvider"
type="Spring.Web.Providers.ConfigurableActiveDirec toryMembershipProvider">
<property name="connectionStringName" value="XXXXDomainConnectionString" />
<property name="connectionUsername" value="user" />
<property name="connectionPassword" value="password" />
</object>
But I am getting the following error
Error creating context 'spring.root': Could not load type from string value 'Spring.Web.Providers.ConfigurableActiveDirectoryM embershipProvider'.
I checked the Spring.WebQuickStart source code and the class Spring.Web.Providers.ConfigurableActiveDirectoryMembershipProvider has been commented out.
Is that the reason I am getting the above error?

Yes, I think you are correct. The error you are getting is exactly the error Spring returns when you are trying to configure an object using a type that can not be loaded. For instance if the class does not exist at all, which appears to be the case here.
You can double check if the ConfigurableActiveDirectoryMembershipProvider class exists by using the object browser to explore the Spring.Web.Providers namespace in the Spring.Web assembly you are using in your project.
You are right that the class is commented out in the current state of the trunk code. It has a small TBD note, so I think they are not sure if they want to implement this. But it could be that it wasn't commented out in the version of Spring.Web you are using, so you should still check it using the object explorer.
Strangely enough, the ConfigurableActiveDirectoryMembershipProvideris mentioned in the documentation - you might want to post this on the Spring.Net forum they're likely to help you.

Related

Examine MultiIndexSearcher Example Umbraco

Trying to get a searcher in razor using the MultiIndexSearcher provider.
<add name="MultiIndexSearcher"
type="Examine.LuceneEngine.Providers.MultiIndexSearcher, Examine"
indexSets="ExternalIndexSet,CustomIndexSet" enableLeadingWildcards="true"
/>
This results in zero results - both via code and in Examine Management in back office.
Does anyone have an example or code snippet for using the MultiIndexSearcher as I am clearly missing something.
Try to specify analyzer, something like this:
<add name="MultiIndexSearcher"
type="Examine.LuceneEngine.Providers.MultiIndexSearcher, Examine"
indexSets="ExternalIndexSet,CustomIndexSet" enableLeadingWildcards="true"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"
/>

The Entity Framework provider type 'Oracle.ManagedDataAccess.EntityFramework' could not be loaded

I am trying to connect to Oracle using the Oracle Data Provider.NET (ODP.NET) using Entity Framework v6 in an MVC application.
I have installed ODP.NET from here:
https://www.nuget.org/packages/odp.net.entityframework/6.121.1-beta
I have configured my web.config file as follows:
<connectionStrings>
<add name="MyDB" connectionString="User ID=MyUser;Password=MyPassword;Data Source=MyDatabase; Persist Security Info=False" providerName="Oracle.ManagedDataAccess" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
</entityFramework>
However, when I try to call my EF Context, I get the following error:
The Entity Framework provider type 'Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' registered in the application config file for the ADO.NET provider with invariant name 'Oracle.ManagedDataAccess.EntityFramework' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application
I have spent a lot of time searching for help with this. Would be very grateful for any help!
Thanks!
Martin
Adding this section to the web.config, along with the steps above, seems to have fixed this:
<system.data>
<DbProviderFactories>
<add name="ODP.NET, Managed Driver"
invariant="Oracle.ManagedDataAccess.Client"
description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
There can be your framework problem. Please check your framework by right clicking on project--> properties check it is 4.5 version.
And then right click on Refrences--> Manage NuGet Package.. go to the nuget.org and type "Official Oracle ODP.NET" in search box. and install Official Oracle ODP.NET, Managed Entity Framework.
Official Oracle ODP.NET, Managed Driver.
Oracle Data Provider for .Net x84/x64.
Thanking you

MVC 4 #Scripts "does not exist"

I have just created an ASP.NET MVC 4 project and used Visual Studio 2012 RC to create a Controller and Razor Views for Index and Create Actions.
When I came to run the application, and browsed to the Create view, the following error was shown:
Compiler Error Message: CS0103: The name 'Scripts' does not exist in
the current context
The problem is the following code which was added automatically to the bottom of the View:
#section Scripts {
#Scripts.Render("~/bundles/jqueryval")
}
Why does Scripts not exist?
I looked at the base Web Page class in Assembly System.Web.Mvc.dll, v4.0.0.0
I can see the following helper properties available:
Ajax
Html
Url
But nothing named Scripts.
Any ideas?
EDIT:
My Web.config file looks like this (untouched from the one that Visual Studio created):
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
EDIT #2:
People are blogging about using the #Scripts helper:
SCOTT HANSELMAN Blog
Codebetter.com
Yet having just installed Visual Studio 2012 RC onto a fresh Windows 8 install I am still unable to use #Scripts even though Visual Studio adds it to the generated View!
Solutions are presented below.
I am not sure how to close this, because in the end an update seemed to resolve the issue. I double checked I had performed a clean install, using a new project. But the same failing project I had made works fine now after various updates and no manual obvious intervention. Thanks for all of the thoughts but there was definitely an issue at the time ;)
The key here is to add
<add namespace="System.Web.Optimization" />
to BOTH web.config files. My scenario was that I had System.Web.Optimization reference in both project and the main/root web.config but #Scripts still didn't work properly. You need to add the namespace reference to the Views web.config file to make it work.
UPDATE:
Since the release of MVC 4 System.Web.Optimization is now obsolete. If you're starting with a blank solution you will need to install the following nuget package:
Install-Package Microsoft.AspNet.Web.Optimization
You will still need to reference System.Web.Optimization in your web.config files. For more information see this topic:
How to add reference to System.Web.Optimization for MVC-3-converted-to-4 app
As many pointed out, restart of VS could be required after the above steps to make this work.
#Styles and #Scripts are 2 new helpers provided by System.Web.Optimization library. As the name suggests, they bundle and minify CSS and JavaScript files or resources respectively.
Try including the namespace System.Web.Optimization either by #using directive or through web.config
http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification
UPDATE
Microsoft has moved the bundling/minification to a separate package called Microsoft.AspNet.Web.Optimization. You can download the assembly from nuget.
This post will be useful to you.
There was one small step missing from the above, which I found on another post. After adding
<add namespace="System.Web.Optimization" />
to your ~/Views/web.config namespaces, close and re-open Visual Studio. This is what I had to do to get this working.
I am using areas, and have just come up against this issue, I just copied the namespaces from the root web.config to the areas web. config and it now works!!
<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.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
I had the same problem and I used WinMerge to help me track this down. But as I researched it more, I found that Rick has the perfect blog post for it.
Summary:
Add <add namespace="System.Web.Optimization"/> to both web.config files
Run Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
Update Bundling code
Update Layout file
The last step is to update 10 other libraries. I didn't and it worked fine. So looks like you can procrastinate this one (unless I already updated 1 or more of them). :)
I had the same issue:
The System.Web.Optimization version I was using was outdated for MVC4 RC.
I updated my packages using the package manager in VS 2010.
In this MSDN blog, Mr. Andy talks about how to update your MVC 4 Beta project to MVC 4 RC. Updating my packages got the Scripts (particularly the web optimization one) to resolve for me:
To install the latest System.Web.Optimization package, use Package Manager Console (Tools -> Library Package Manager -> Package Manager Console) and run the below command:
Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
Use the System.Web.Optimization file included in the package in your references.
To update other packages:
Tools menu -> Library Package Manager -> Manage NuGet Packages for Solution.
Create a new MVC 4 RC internet application and run it. Navigate to Login which uses the same code
#section Scripts {
#Scripts.Render("~/bundles/jqueryval")
}
What allows Login.cshtml to work is the the Views\Web.config file (not the app root version) contains
<namespaces>
<add namespace="System.Web.Optimization"/>
</namespaces>
Why is your Create view not working and Login is?
Import System.Web.Optimization on top of your razor view as follows:
#using System.Web.Optimization
I ran into this problem, however while running the command:
Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
I received the cryptic message (gotta love a great pun before the first cup of coffee):
Install-Package : The specified cryptographic algorithm is not
supported on this platform.
I am running this on Windows XP SP3 (not by choice) and what I found was that I had to follow the instructions posted by the user artsnob on the ASP.NET Forum
Please uninstall the Nuget and try re-installing it. If you are unable to do this, login as an Administrator.
Go to Tools=> Extension Manager => Select "Nuget Package Manager" => UnInstall
Install it again, by searching "Nuget" => Install.
If it did not work, please try installing, 1.7.x version as I mentioned in the previous post (It doesn't mean, you have to use the previous version, if it works fine, we can report this bug, and get the patches for the latest version).
Once I ran this I could then run the command line to update the Web.Optimization.
Hope this saves someone some digging.
Just write
#section Scripts{
<script src="#System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}
I upgraded from Beta to RC and faced 'Scripts' does not exist issue. Surfed all over the web and the final solution is what N40JPJ said plus another workaroudn:
Copy the following in View\Web.config :
<namespaces>
<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.Optimization"/>
<add namespace="System.Web.Helpers"/>
</namespaces>
and the following inside View\Shared_Layout.cshtml
#if (IsSectionDefined("scripts"))
{
#RenderSection("scripts", required: false)
}
Hope it helps.
Apparently you have created an 'Empty' project type without 'Scripts' folder.
My advice
-create a 'Basic' project type with full 'Scripts' folder.
With respect to all developers.
just remove/ hide the code from create & Edit razor view of your controller.
#section Scripts {
#Scripts.Render("~/bundles/jqueryval")
}
: remove view page.
: add namespace webconfig (in view directory)
: create view an try!
good luck...
One more for the pot - spent ages trying to work out the same problem - even though it was defined in the web.config for root and the root of Views. Turns out I'd mistakenly added it to the <system.web><pages><namespaces>, and not <system.web**.webPages.razor**><pages><namespaces> element.
Really easy to miss that!
When I enter on a page that haves this code:
#section Scripts {
#Scripts.Render("~/bundles/jqueryval")
}
This error occurs: Error. An error occurred while processing your request.
And this exception are recorded on my logs:
System.Web.HttpException (0x80004005): The controller for path '/bundles/jqueryval' was not found or does not implement IController.
em System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
...
I have tried all tips on this page and none of them solved for me. So I have looked on my Packages folder and noticed that I have two versions for System.Web.Optmization.dll:
Microsoft.AspNet.Web.Optimization.1.1.0 (v1.1.30515.0 - 68,7KB)
Microsoft.Web.Optimization.1.0.0-beta
(v1.0.0.0 - 304KB)
My project was referencing to the older beta version. I only changed the reference to the newer version (69KB) and eveything worked fine.
I think it might help someone.
That has an obvious solution. I had the same problem later. Not related to Assembly References or ... .It'll occur In hierarchy calling of MVC Partial views, when you have complicated page structures. So calling/rendering each part separately on each page (maybe a master page or partial) will cause to not see required parts of page like the bellow code :
#RenderSection("Scripts", required: false)
That simply forces page to find and render related section and in case of failure shows you an error message like you.
So I suggest you to trace your pages (like program trace) from master to all of its partials to Detect Dependencies. Maybe it be a terrible work, but no other choices available here.
Not that according to my experience, some conditional situations in programming causes not to show you the right error causes the problem.
I had this issue after I added an Area to a project that didn't have any.
To get rid of it just copied the web.config withing root Views folder to the Views folder of the area and it started working.
For me this solved the problem, in NuGet package manager console write following:
update-package microsoft.aspnet.mvc -reinstall
When i started using MVC4 recently i faced the above issue while creating a project with the empty templates.
Steps to fix the issue.
Goto TOOLS --> Library Package Manager --> Packager Manager Console
Paste the below command and press enter
Install-Package Microsoft.AspNet.Web.Optimization
Note: wait for successful installation.
Goto Web.Config file in root level and add below namespace in pages namespace section.
add <namespace="System.Web.Optimization" />
Goto Web.Config in Views folder and follow the step 2.
Build the solution and run.
The Package mentioned in step 1 will add few system libraries into the solution references like System.Web.Optimization is not a default reference for empty templates in MVC4.
I hope this helps.
Thank you
I had a very similar error when upgrading a project from MVC3 to MVC4.
Compiler Error Message: CS0103: The name [blah] does not exist in the
current context
In my case, I had outdated version numbers in several of my Web.Configs.
I needed to update the System.Web.Mvc version number from "3.0.0.0" to "4.0.0.0" in every Web.Config in my project.
I needed to update all of my System.Web.WebPages, System.Web.Helpers, and System.Web.Razor version numbers from "1.0.0.0" to "2.0.0.0" in every Web.Config in my project.
Ex:
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
...
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Helpers, 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>
Be sure to review the Web.Configs in each of your Views directories.
You can read more about Upgrading an ASP.NET MVC 3 Project to ASP.NET MVC 4.
If you added to your web.config and it still shows message, then you need to close your project and reopen it, now it will exist and #Styles.Render("") and #Scripts.Render() will work fine.
I solve this problem in MvcMusicStore by add this part of code in _Layout.cshtml
#if (IsSectionDefined("scripts"))
{
#RenderSection("scripts", required: false)
}
and remove this code from Edit.cshtml
#section Scripts {
#Scripts.Render("~/bundles/jqueryval")
}
Try this:
#section Scripts
{
Scripts.Render("~/bundles/jqueryval") // <- without ampersand at the begin
}

Custom Saml2SecurityTokenHandler - The token Serializer cannot serialize

For the sake of simplicity, I've implemented the following class:
public class CustomUserNamePasswordValidatorSecurityTokenHandler : UserNameSecurityTokenHandler {}
And I've enabled it configuration (and enabled proper configSection):
<microsoft.identityModel>
<service>
<securityTokenHandlers>
<clear />
<add type="CustomUserNamePasswordValidatorSecurityTokenHandler" />
</securityTokenHandlers>
</service>
</microsoft.identityModel>
And performing an actual RP call against my STS yields (in service trace viewer):
The token Serializer cannot serialize 'Microsoft.IdentityModel.Tokens.SessionSecurityToken'. If this is a custom type you must supply a custom serializer.
If I comment out the configuration (so no token handler applys), everything works fine. How do I supply this custom serializer?
NOTE: There's a couple references to the issue in this thread however I don't see the resolution.
Removing the <clear /> on the securityTokenHandler section should suffice (I editied may answer on your other question accordingly, sorry).
<clear /> removes all by default registered handlers (e.g. for the SessionSecurityToken).

Unity Dependency Injection - how to RegisterInstance in .config?

This is a C# Asp.net MVC project.
I've currently got the Unity mappings set up in the global.asax.cs. I'd like to move the container setup from code, to the web.config.
All has gone fine with my own types, but now I need to translate this line :
container.RegisterInstance(System.Web.Security.Membership.Provider);
(All the other config lines are container.RegisterType).
I don't get very far at all.
If I even include
<typeAliases>
<!-- others elided -->
<typeAlias
alias="MembershipProvider"
type="System.Web.Security.MembershipProvider, System.Web"></typeAlias>
it dies with a config error:
The value of the property 'type' cannot be parsed. The error is: Could not load file or assembly 'System.Web' or one of its dependencies. The system cannot find the file specified.
So that's pretty weird - it seems like it's not looking in the GAC to resolve it? Or System.Web is not in the appdomain yet?
If I manually copy System.Web to the bin folder I can proceed, and get to the crux of the issue : how do you RegisterInstance System.Web.Security.MembershipProvider --> System.Web.Security.Membership.Provider?
<type type="MembershipProvider" mapTo="System.Web.Security.Membership.Provider, System.Web"></type>
gives :
Could not load type 'System.Web.Security.Membership.Provider' from assembly 'System.Web'.
as expected, since it's not a type.
Thanks for any pointers.
have you tried the longer Assembliy reference ?
System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
So in your case you would have a line like
<type type="MembershipProvider" mapTo="System.Web.Security.MembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"></type>
Also woth mentioning that you had a . in the middle of "MembershipProvider" in your second example.

Resources