我在控制器中有一个动作,它返回一个要下载的文件,但这个动作并没有显示在Glimpse的历史记录中。
有没有办法让它出现?
这是代码:
public ActionResult DownloadCv(string fileName)
{
string filepath = string.Format("{0}/{1}", _appSettings.CvsDirectory, fileName);
const string contentType = "application/msword";
return File(filepath, contentType, fileName);
}
答案 0 :(得分:2)
它当前未显示的原因是默认情况下content type policy所在的原因。如果您查看以下documentation,您会看到内容类型部分,其中介绍了需要完成的工作:
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
<runtimePolicies>
<contentTypes>
<add contentType="application/msword"/>
</contentTypes>
</runtimePolicies>
</glimpse>
您可能遇到的问题是,通过内容类型策略的实现方式,它会返回RuntimePolicy.On
。这意味着一瞥客户端将尝试嵌入结果中。你真正想要的是RuntimePolicy.PersistResults
。因此,将上述contentType
添加到runtimePolicies
部分后。我也会创建以下内容并将其放入您的项目中,Glimpse应该接下来。
public class MsWordContentTypePolicy : IRuntimePolicy
{
public RuntimeEvent ExecuteOn
{
get { return RuntimeEvent.EndRequest; }
}
public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
{
var contentType = policyContext.RequestMetadata.ResponseContentType.ToLowerInvariant();
return contentType == "application/msword" ? RuntimePolicy.PersistResults : RuntimePolicy.On;
}
}
答案 1 :(得分:0)
此后已将其纳入Glimpse,您只需使用:
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
<runtimePolicies>
<contentTypes>
<add contentType="application/msword" runtimePolicy="PersistResults" />
</contentTypes>
</runtimePolicies>
</glimpse>