微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DNN:HttpContext.Current.Session 不工作

如何解决DNN:HttpContext.Current.Session 不工作

我不是 .NET 编程方面的专家,我正在尝试解决这个问题,但没有成功。

我们决定改造我们的旧网站,其中一部分是切换主题。但是我们有一个旧的功能,我们不能移动到新的主题

我们的旧网站有一个获取用户会话代码功能,这样如果他们通过url转到我们的联盟网站,他们就会自动登录

这是我们旧主题代码...

主题代码

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="/Home.ascx.cs" Inherits="Mandeeps.DNN.Skins.Tucson.Tucson" %>
<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>
<script type="text/javascript">
var onetimeurl = "<%#HttpContext.Current.Session["OneTimeURL"]%>";
$(document).ready(function() {
    $('.financials_link').attr("href","https://sub.domain.com?authToken=" + onetimeurl);
    $('.financials_link').attr("target","_blank");
    var service = $.ServicesFramework(-1);
    $.ajax({
        type: "GET",url: service.getServiceRoot("WebAuthModule") + "webauth/getauthtoken",beforeSend: service.setModuleHeaders,dataType: "json"
    }).done(function(a) {
        a && $(".financials_link").attr("href","https://sub.domain.com?authToken=" + a)
    });
});
</script>

效果很好。但是当将代码移动到新主题时,代码没有显示出来并且破坏了页面的布局。我收到了这个错误

Line 20: Error BC30516: Overload resolution Failed because no accessible 'ToString' accepts this number of arguments.

主题代码

<%@ Control Language="vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.Skins.Skin" %>
<script type="text/javascript">
 var onetimeurl = "<%#HttpContext.Current.Session["OneTimeURL"]%>"; <!--LINE 20-->
$(document).ready(function() {
    $('.financials_link').attr("href","https://sub.domain.com?authToken=" + a)
    });
});
</script>

注意到第一行,我添加了控制代码,因为这是我认为唯一不同的地方。其他的都差不多。

到目前为止我所做的是反编译 Home.ascx (.dll) 并寻找 OneTimeURL,但我找不到它。

我希望你们能发现问题,这样我才能解决这个问题。

解决方法

你说旧的是 C# 而新的是 VB 对我来说似乎很奇怪??

但鉴于我在上面看到的,试试这个,只需将方括号更改为括号,所以新的第 20 行是:

var onetimeurl = "<%#HttpContext.Current.Session("OneTimeURL") %>";

如果这不起作用,请尝试在底部添加此功能。

<script runat="server">
Public Function GetSession() As String
  Return HttpContext.Current.Session("OneTimeURL")
End Function
</script>

然后第 20 行需要是:

var onetimeurl = "<%#GetSession() %>";

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。