Glimpse在本地工作,而不是在远程服务器上工作

时间:2014-04-22 00:29:32

标签: c# asp.net asp.net-mvc asp.net-mvc-5 glimpse

在按照所有指南,SO页面和疑难解答页面后,我发现我终于出了想法。

我已经在我的本地开发服务器上运行了Glimpse,但是当我将我的ASP.net(MVC5)应用程序部署到我的远程服务器时,它根本不起作用。 /glimpse.axd提供了一个404,同时LocalPolicyControlCookiePolicy设置为忽略,并且自定义安全策略在所有情况下都返回On。我的理解是,如果禁用ControlCookiePolicy,我就不需要转到/glimpse.axd启用它 - 但我也没有看到远程服务器上的一瞥图标。

即使我去远程服务器并浏览localhost到/glimpse.axd,我仍然会得到404.

我的web.config看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
    <section name="glimpse" type="Glimpse.Core.Configuration.Section, Glimpse.Core" />
</configSections>

<system.web>
    <compilation debug="false" />
    <httpRuntime targetFramework="4.5.1" relaxedUrlToFileSystemMapping="true" />
</system.web>

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="FormsAuthentication" />
    </modules>

    <urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="false" />
</system.webServer>

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
    <logging level="Trace" />
    <runtimePolicies>
        <ignoredTypes>
            <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet" />
            <add type="Glimpse.Core.Policy.ControlCookiePolicy, Glimpse.Core" />
        </ignoredTypes>
    </runtimePolicies>
</glimpse>
</configuration>

这是远程服务器上的版本(转换后)。我已经修剪了一下以删除像appSettings这样的部分。

My GlimpseSecurityPolicy.cs看起来像这样:

// Uncomment this class to provide custom runtime policy for Glimpse

using Glimpse.AspNet.Extensions;
using Glimpse.Core.Extensibility;

namespace RationalVote
{
public class GlimpseSecurityPolicy:IRuntimePolicy
{
    public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
    {
        return RuntimePolicy.On;
    }

    public RuntimeEvent ExecuteOn
    {
        // The RuntimeEvent.ExecuteResource is only needed in case you create a security policy
        // Have a look at http://blog.getglimpse.com/2013/12/09/protect-glimpse-axd-with-your-custom-runtime-policy/ for more details
        get { return RuntimeEvent.EndRequest | RuntimeEvent.ExecuteResource; }
    }
}
}

真实的人会进行实际检查,但我在上述政策中遇到了同样的问题。

我似乎无法在远程服务器上的任何位置找到任何跟踪输出,它在我的本地计算机上正常记录。

我正在使用Visual Studio发布到网络功能进行部署,并且我已验证Glimpse.Core.dll位于bin文件夹中。

我无法在事件日志中看到任何相关内容。

我还将<add namespace="Glimpse.Mvc.Html" />添加到views文件夹中web.config的名称空间块中。

我尝试将@Html.GlimpseClient()放在_Layout.cshtml文件正上方的</body>文件中,但这不会产生任何效果。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

如果glimpse.axd返回404,则表示未注册Glimpse资源处理程序。

如果你上面显示的web.config内容没有被修剪得太多,那么Glimpse不会做很多事情是正常的,因为Glimpse HttpModule并且Glimpse HttpHandler没有注册system.web和/或system.webserver这样的部分

<system.web>
    <httpModules>
        <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet"/>
    </httpModules>
    <httpHandlers>
        <add path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet"/>
    </httpHandlers>
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode"/>
    </modules>
    <handlers>
        <add name="Glimpse" path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet"  preCondition="integratedMode" />
    </handlers>
</system.webServer>

也许您的转换从本地web.config移除了很多?