在按照所有指南,SO页面和疑难解答页面后,我发现我终于出了想法。
我已经在我的本地开发服务器上运行了Glimpse,但是当我将我的ASP.net(MVC5)应用程序部署到我的远程服务器时,它根本不起作用。 /glimpse.axd
提供了一个404,同时LocalPolicy
和ControlCookiePolicy
设置为忽略,并且自定义安全策略在所有情况下都返回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>
文件中,但这不会产生任何效果。
有人有任何想法吗?
答案 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移除了很多?