Session Object & Link Navigation

Discussion in 'ASP .Net Mobile' started by Alex Maghen, May 22, 2007.

  1. Alex Maghen

    Alex Maghen Guest

    I'm building an ASP.NET Mobile Web application that uses Session. Because I
    am also doing FormsAuthentication, I've set up my Web.Config with certain
    settings I read I should use. It looks like:

    <system.web>
    <compilation debug="true"/>
    <authentication mode="Forms">
    <forms loginUrl="~/Login/Default.aspx"
    name="HomoMoAuth" timeout="10" path="/">
    </forms>

    </authentication>
    <authorization>
    <allow users="*"/>
    </authorization>

    <sessionState
    mode="InProc" cookieless="true" timeout="20"
    />

    <httpRuntime useFullyQualifiedRedirectUrl="true" />

    <mobileControls
    cookielessDataDictionaryType="System.Web.Mobile.CookielessData" />

    </system.web>


    ANYWAY, here's my problem: It seems that, maybe, because of the
    "useFullyQualifiedRedirectUrl" or something, I can't really use the "~" in my
    Link Paths. If I do, I loose my Session object. Can someone help me
    understand how/if I can still use the "~"? I like it!
     
    Alex Maghen, May 22, 2007
    #1
    1. Advertisements

  2. Hi Alex,

    It's related to the cookieless session:

    <quote>
    #ASP.NET Web Site Paths
    http://msdn2.microsoft.com/en-us/library/ms178116.aspx
    Note

    For mobile pages only, if your application relies on cookieless sessions or
    might receive requests from mobile devices that require cookieless
    sessions, using a tilde ("~") in a path can result in inadvertently
    creating a new session and potentially losing session data. To set a
    property on a mobile control with a path that includes a tilde (such as
    "~/path"), resolve the path using the ResolveUrl method before assigning it
    to the property.
    </quote>

    Hope this helps.


    Regards,
    Walter Wang (, remove 'online.')
    Microsoft Online Community Support

    ==================================================
    When responding to posts, please "Reply to Group" via your newsreader so
    that others may learn and benefit from your issue.
    ==================================================

    This posting is provided "AS IS" with no warranties, and confers no rights.
     
    Walter Wang [MSFT], May 23, 2007
    #2
    1. Advertisements

  3. Alex Maghen

    Alex Maghen Guest

    Walter -

    Thanks for this. It *does* seem to improve things somewhat. Now I have
    another related question: Let's say I want to create my own Link control
    which will automatically perform this ResolveUrl() function and also will do
    some other things to alter the standard <mobile:link> control. If my new
    control is defined as

    public partial class AxMobileLink : System.Web.UI.MobileControls.Link

    Is there a way that I can sort of automatically support all of the
    properties and methods exposed by the constituent <mobile:Link? without
    writing my own proerty and function overriding each one which does nothing
    but call the base?

    Ax
     
    Alex Maghen, Jun 1, 2007
    #3
  4. Alex Maghen

    Alex Maghen Guest

    Walter -

    I am now confused a little further. Let's say I want to place two links on a
    Mobile form with the Web.config settings I defined below. The links are as
    follows:

    1. ~/Default.aspx
    2. SomeFolder/Default.aspx

    You recommended that I user ResolveURL() on these paths before placing them
    in the NavigateURL field of the <mobile:Link> control. The problem is, if I
    do that for #1 above, it works fine. But if I do it for #2, it doesn't behave
    properly. How am I supposed to know when to use ResolveURL and when now?

    Alex
     
    Alex Maghen, Jun 2, 2007
    #4
  5. Hi Alex,

    Please try following approach:

    public class Class1 : Link
    {
    protected override void OnPreRender(EventArgs e)
    {
    NavigateUrl = Page.ResolveUrl(NavigateUrl);
    base.OnPreRender(e);
    }
    }


    Using this customized Link control will make sure it calls ResolveUrl
    before displaying the hyperlink.

    Let me know if this works for you.


    Regards,
    Walter Wang (, remove 'online.')
    Microsoft Online Community Support

    ==================================================
    When responding to posts, please "Reply to Group" via your newsreader so
    that others may learn and benefit from your issue.
    ==================================================

    This posting is provided "AS IS" with no warranties, and confers no rights.
     
    Walter Wang [MSFT], Jun 4, 2007
    #5
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.