网站在本地运行良好,但在Windows Azure上崩溃

时间:2014-03-15 16:19:24

标签: c# asp.net-mvc asp.net-mvc-4 azure web

我刚刚将我的应用程序发布到我的Windows Azure网站。 在我的网站上,我使用以下代码获取用户的IP地址:

ip = HttpContext.Current.Request.UserHostAddress;

当我在localhost上运行它时工作正常,但是当我在Azure上运行它时它会崩溃 - 我甚至尝试捕获异常,但它似乎没有抛出任何异常。

此外,当我远程调试网站时,我看不到HttpContext的“当前”属性 - 它只是说:

Cannot evaluate expression because the code of the current method is optimized.

此外,我可以看到我可以轻松获取控制器中的IP - 只有当我在控制器外调用HttpContext.Current.Request.UserHostAddress时才会出现问题。

有谁知道问题是什么?

1 个答案:

答案 0 :(得分:3)

在Application_Start运行完毕之后,使用IIS集成模式时,HttpContext不可用。

为了解决这个问题,您可以使用单例模式来读取设置并将其存储,直到应用程序循环使用。

public class IPService
{
    private static string ip = string.Emtpy;

    public static string GetIP()
    {
        if (string.IsNullOrEmpty(this.ip))
        {
            this.ip = HttpContext.Current.Request.UserHostAddress;
        }

        return this.ip;
    }
}

然后,只要您需要访问IP,就可以致电:

var ip = IPService.GetIP();

请确保在应用程序启动期间不要调用它。