我正在ASP.NET中设计一个网站,我正在将Steam API集成到其中。我正在使用DotNetOpenAuth进行身份验证。我对如何访问和显示变量responseURI
(第22行)感到困惑。每当我尝试使用以下方法在网页上显示变量时:
<p><%=responseURI%></p>
我收到一条消息说明:
当前上下文中不存在名称“responseURI”。
这是我的C#
using DotNetOpenAuth.OpenId.RelyingParty;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class loginPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response != null)
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
// do success
var responseURI = response.ClaimedIdentifier.ToString();
break;
case AuthenticationStatus.Canceled:
case AuthenticationStatus.Failed:
// do fail
break;
}
}
else
{
using (OpenIdRelyingParty openidd = new OpenIdRelyingParty())
{
IAuthenticationRequest request = openidd.CreateRequest("http://steamcommunity.com/openid");
request.RedirectToProvider();
}
}
}
}
答案 0 :(得分:4)
因为它不存在于页面的上下文中,所以仅在switch
个案的上下文中存在。 Page
是类,只是使它成为类级别的值。 (我认为可见性至少需要protected
,因为显示的页面“从代码隐藏页面继承”。)
protected string ResponseURI { get; set; }
这将放在类级别,就像C#中的任何其他属性一样。例如:
protected string ResponseURI { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
//...
}
然后在代码中设置它:
this.ResponseURI = response.ClaimedIdentifier.ToString();
并在页面上显示:
<%=ResponseURI%>