You are here:   Forum
Register   |  Login

 

This Forum is ARCHIVE only
For LightSwitch questions,
please use the official forums at:

http://social.msdn.microsoft.com/forums/en-US/lightswitch/threads


Forums

Running external Application in an IFrame causes DotNetNuke to stop allowing users to log in
Last Post 13 Jul 2011 08:17 AM by admin. 7 Replies.
AddThis - Bookmarking and Sharing Button Printer Friendly
  •  
  •  
  •  
  •  
  •  
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages
Michael WashingtonUser is Offline
Send Private Message
Posts:1305
Avatar

--
30 May 2011 04:40 PM
    If you follow the example described here:

    http://lightswitchhelpwebsite.com/B...yment.aspx


    Everything will work just fone for about 5 minutes. then you will find that users cannot log into the DotNetNuke website anymore.

    The reason is that when they log in, the DotNetNuke core stored procedure, UpdateUser, gets stuck in a loop until it times out.

    When I reproduce this on my test machine, I can go into SQL Enterprise Manager and the following query will run until you stop it:

    exec dbo.UpdateUser @UserID=2,@PortalID=0,@FirstName=N'Administrator',@LastName=N'Account',@Email=N'Webmaster@ADefwebserver.com',@DisplayName=N'Administrator Account',@UpdatePassword=0,@Authorised=1,@RefreshRoles=0,@LastIPAddress=N'::1',@IsDeleted=0,@LastModifiedByUserID=-1

    The question of course is why? I can only suspsct it is that perhaps something odd is happening because the MachineKey was copied into the remote site and some bad parameters are now being passed to the stored procedure?

    I am trying to investigate this, but any ideas are appreciated!
    -----------
    Michael Washington
    http://LightSwitchHelpWebsite.com
    Michael WashingtonUser is Offline
    Send Private Message
    Posts:1305
    Avatar

    --
    30 May 2011 04:55 PM
    First update. It's not the paramteters passed to the stored procedure. I have another DotNetNuke website where I am the Admin Account and User 2. When I log in, the "UpdateUser" stored procedure in that site is run with the exact same parameters and it runs fine.



    Now I am looking "inside" the stored procedure...



    ALTER PROCEDURE [dbo].[UpdateUser]

    @UserID int,

    @PortalID int,

    @FirstName nvarchar(50),

    @LastName nvarchar(50),

    @Email nvarchar(256),

    @DisplayName nvarchar(100),

    @UpdatePassword bit,

    @Authorised bit,

    @RefreshRoles bit,

    @LastIPAddress nvarchar(50),

    @IsDeleted bit,

    @LastModifiedByUserID int

    AS

    UPDATE dbo.Users

    SET

    FirstName = @FirstName,

    LastName = @LastName,

    Email = @Email,

    DisplayName = @DisplayName,

    UpdatePassword = @UpdatePassword,

    LastIPAddress = @LastIPAddress,

    LastModifiedByUserID = @LastModifiedByUserID,

    LastModifiedOnDate = getdate()

    WHERE UserId = @UserID



    IF @PortalID IS NULL

    BEGIN

    UPDATE dbo.Users

    SET

    IsDeleted = @IsDeleted

    WHERE UserId = @UserID

    END

    ELSE

    BEGIN

    UPDATE dbo.UserPortals

    SET

    Authorised = @Authorised,

    RefreshRoles = @RefreshRoles,

    IsDeleted = @IsDeleted

    WHERE UserId = @UserID

    AND PortalId = @PortalID

    END
    -----------
    Michael Washington
    http://LightSwitchHelpWebsite.com
    Michael WashingtonUser is Offline
    Send Private Message
    Posts:1305
    Avatar

    --
    30 May 2011 05:13 PM
    This query (this is the first part of the "UpdateUser" stored procedure) simply will not complete when I try to run it in SQL Enterprise manager:

    DECLARE @RC int
    DECLARE @UserID int
    DECLARE @PortalID int
    DECLARE @FirstName nvarchar(50)
    DECLARE @LastName nvarchar(50)
    DECLARE @Email nvarchar(256)
    DECLARE @DisplayName nvarchar(100)
    DECLARE @UpdatePassword bit
    DECLARE @Authorised bit
    DECLARE @RefreshRoles bit
    DECLARE @LastIPAddress nvarchar(50)
    DECLARE @IsDeleted bit
    DECLARE @LastModifiedByUserID int

    -- TODO: Set parameter values here.
    Set @UserID=2
    Set @PortalID=0
    Set @FirstName=N'Administrator'
    Set @LastName=N'Account'
    Set @Email=N'Webmaster@ADefwebserver.com'
    Set @DisplayName=N'Administrator Account'
    Set @UpdatePassword=0
    Set @Authorised=1
    Set @RefreshRoles=0
    Set @LastIPAddress=N'::1'
    Set @IsDeleted=0
    Set @LastModifiedByUserID=-1

    UPDATE dbo.Users
    SET
    FirstName = @FirstName,
    LastName = @LastName,
    Email = @Email,
    DisplayName = @DisplayName,
    UpdatePassword = @UpdatePassword,
    LastIPAddress = @LastIPAddress,
    LastModifiedByUserID = @LastModifiedByUserID,
    LastModifiedOnDate = getdate()
    WHERE UserId = @UserID


    What could cause this? I have to stop and re-start SQL Server to get everything back to normal
    -----------
    Michael Washington
    http://LightSwitchHelpWebsite.com
    Michael WashingtonUser is Offline
    Send Private Message
    Posts:1305
    Avatar

    --
    30 May 2011 05:24 PM
    Ok the Users table is simply locked when this happens. It is nothing special about the "UpdateUser" stored procedure. Also it is only the "Admin" record in the User table. I can edit any other row but that one.

    So the question is now, what is locking that row in the users table?
    -----------
    Michael Washington
    http://LightSwitchHelpWebsite.com
    Michael WashingtonUser is Offline
    Send Private Message
    Posts:1305
    Avatar

    --
    30 May 2011 07:55 PM
    Ok it appears I have tracked this down.

    I needed to determine if the current user is an Administrator or not in my external LightSwitch application. the problem is LightSwitch places locks on tables when you connect to external data sources.

    So when I connected to the DotNetNuke Users table, LightSwitch locks the rows it is using. Locking the DotNetNuke Users table is a no no. The thing that sucks is I also get this even if I am using a View (like vw_UserRoles)

    I can use others methods such as a web service to get the information I need.

    The good news is that this is only related to connecting to DotNetNuke as an external datasource NOT related to running LightSwitch in an IFrame with DotNetNuke.
    -----------
    Michael Washington
    http://LightSwitchHelpWebsite.com
    Michael WashingtonUser is Offline
    Send Private Message
    Posts:1305
    Avatar

    --
    04 Jun 2011 08:28 AM
    A final note on this. The answer is to use a WCF RIA Dataservice. This is what I am using in the Things For Sale example at: http://lightswitchhelpwebsite.com/D...rSale.aspx
    -----------
    Michael Washington
    http://LightSwitchHelpWebsite.com
    SpartanUser is Offline
    New Member
    New Member
    Send Private Message
    Posts:14
    Avatar

    --
    13 Jul 2011 08:08 AM
    One question I had is...how do you get your site to run so fast with DNN?  Is there any special configuration/hosting that you use?
    Michael WashingtonUser is Offline
    Send Private Message
    Posts:1305
    Avatar

    --
    13 Jul 2011 08:17 AM
    -----------
    Michael Washington
    http://LightSwitchHelpWebsite.com
    You are not authorized to post a reply.


    Latest Microsoft Visual Studio LightSwitch Forum Threads That Have Answers

    I have a table for project meetings (PRJ_MTGS) and I want to get the value of the meeting agenda field (MTG_AGNDA). So in this case, I just need the string value of PRJ_MTG.MTG_AGNDA not the queryable record set. I do not know how to call the method to return the value. The use case is to create a Outlook object which is working fine. But the email body needs the agenda which is a html string. I pass some data points, like the recipient, when I call the handler, but the html string would be too long for this method. myapp.ViewTSA_PRJ_MTG.CreateInvite_execute = function (screen) { window.open("../Web/MeetingInvites.ashx?recip=" + recips ); }; Consider the LINQ query in my c# class handler (.ashx.cs): namespace LightSwitchApplication.Web { /// <summary> /// Summary description for MeetingInvites /// </summary> public class MeetingInvites : IHttpHandler { public void ProcessRequest(HttpContext
    Read more...

    Hi, I have a LightSwitch HTML app that is using an external SQL server as the data source. Because of this all of the Validation properties are greyed out, such as Maximum and Minimum on number fields. So I tried to use Custom Validation:

    partial void MYAmount_Validate(EntityValidationResultsBuilder results)

            {

                ifRead more...


    Hi All, I have my first major LightSwitch HTML app built and am going through and cleaning up some of the minor stuff that has been irritating me. The biggest of those is that if I click on a new row in a table by clicking on an editable Text Box, that Text Box gets focus but then loses it. this is forcing my users to have to click twice to enter data into a text box. Did some reading and possibly what is going on is that the first click selects the new row and the second click actually makes that Text Box editable. Is there a way to give the Text Box back it's focus after the new row has been selected? Or just automatically give the associated Text Box focus anytime a row is selected? I did not see any events that looked like "row selected" or "on click" or anything like that. Thanks, Jeremy
    Read more...

    Hello, i have build a LightSwitch HTML App and want other employees in my company to be able to work with the data. So i thought it would be great if they can "export" the data to excel or csv. I found many options for that, but i am not a developer so i have issues in programming. I know it is possible to easily use power query from excel itself and consume the data over odata feed. So my question is if it is possible and when how, to export the data from lightswitch automatically to excel with a button or something like that? So that the employees not have to open excel and import the data them self? Or are there better possibilities you know that can export the data to the users desktop over a button? Thanks for your help in advance and kind regards, AHLEONIT
    Read more...

    New to Azure. I am trying to publish an existing web app to a virtual directory on Azure. I went to Azure portal - Application Settings, scrolled down and typed in the following virtual directory and location: Funding      site\wwwroot\funding Application is checked. I publish from VS 2103 the same as when I was on my IIS server.  I get an HTTP 500 error first.  If I hit back several times I get the following: Server cannot access application directory 'D:\home\site\wwwroot\funding\'. The directory does not exist or is not accessible because of security settings The directory \funding is not being created.  My publish looks like this: I tried changing the output path of the HTML client to \funding but that did not work either. How do I create the physical path in VS 2013 so the virtual directory will work? Thank you for your time.
    Read more...

    1234
    Microsoft Visual Studio is a registered trademark of Microsoft Corporation / LightSwitch is a registered trademark of Microsoft Corporation