【问题标题】:ASP.NET Compilation Error when accessing variable located in code behind访问位于代码后面的变量时出现 ASP.NET 编译错误
【发布时间】:2016-04-15 21:31:25
【问题描述】:

我在后面的代码中设置了一个变量:

public string loggedInUserId { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
    loggedInUserID = User.Identity.GetUserId();
}

当我在调试模式下运行时,这很好,var 可以正确获取用户。

我有这段 Javascript 从评级系统中获取值,然后调用 WCF 服务:

var loggedinuserid = "<%=loggedInUserId%>";
SaveRatingService.Save(score, walkID, loggedInUserID);

同样,这在本地运行良好。但是,当我发布到服务器并尝试访问该页面时,我得到了这个:

完整的错误日志:

CS1061: 'ASP.walks_walkdetails_aspx' does not contain a definition for 'loggedInUserId' and no extension method 'loggedInUserId' accepting a first argument of type 'ASP.walks_walkdetails_aspx' could be found (are you missing a using directive or an assembly reference?)

为什么要这样做?我尝试在WalkDetails.aspx.designer.cs 文件中手动注册变量,但它抱怨它已经注册了。

提前致谢。

【问题讨论】:

  • 您确定您的“发布”100% 正确吗?这看起来很像您的 dll 在服务器上没有被正确替换时遇到的确切问题。
  • 实际上,据我所知,代码背后的加载发生在设计页面加载之后。所以在你的情况下,首先你的javascript函数将会发生,但这不知道loggedInUserId变量。
  • @Paul-Jan 我已经尝试多次上传它,它说'成功发布。我会再试一次,但做一个完整的发布(而不是单个值)。然后我将直接通过 FTP 进行调查并回复您
  • @Khazratbek 我在$(document).ready(function(){...} 上运行的函数中获得了变量。这不应该阻止你所说的事情发生吗?
  • 您的应用程序池是否相同(本地和服务器上)?特别是托管管道模式和 .NET 框架版本...

标签: javascript c# asp.net wcf


【解决方案1】:

“”末尾的那个多余的“>”是什么;>

编辑: 好的,因为您描述的问题仅发生在您的部署服务器中(而不是在您的本地开发机器中),如果我是您,我自然会怀疑部署机器。

您是否有任何迹象表明您的部署是成功的?您如何部署 - 您是手动将整个项目/解决方案复制到 wwwroot,还是只是使用 Visual Studio 的 Web 部署工具进行部署?因为看起来您的服务器端代码不包含“loggedInUserId”的定义。

如果您使用 Visual Studio 的部署工具,并且使用基于 Windows 的服务器作为部署目标 - 您能否验证您的项目生成的 DLL 是否正确安装在服务器的 Windows\Assembly 文件夹中?

【讨论】:

  • 对不起,这实际上是我的错字,我现在已经更新了问题
【解决方案2】:

通常我为页面定义全局变量:public string varVal = "";,然后在后面的代码中创建一些方法来获取变量的值(如下):

public string GetVariableValue(){
    varVal = "myValue";
}

然后在设计页面中,在 javascript 中(只是示例):

alert('<%=GetVariableValue()%>');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多