问题描述
我不是 .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() %>";