小编Zou*_*out的帖子

StructureMap导致Web API帮助页面ModelDescriptionLink.cshtml中的Stack Empty异常

我有一个Web API项目,它使用StructureMap作为其DI.它已经工作了一段时间,但我在Web API帮助页面(Microsoft.AspNet.WebApi.HelpPage)中遇到了一些问题,其中由于空堆栈而抛出InvalidOperationExceptions.

我使用帮助页面创建了一个新的Web API项目,它可以正常工作,直到我添加StructureMap.WebApi2包,而前面提到的异常在这里抛出,在ModelDescriptionLink.cshtml中

else if (modelDescription is CollectionModelDescription)
{
    var collectionDescription = modelDescription as CollectionModelDescription;
    var elementDescription = collectionDescription.ElementDescription;
    @:Collection of @Html.DisplayFor(m => elementDescription.ModelType, "ModelDescriptionLink", new { modelDescription = elementDescription })
}
else
{
    @Html.DisplayFor(m => modelDescription)
}
Run Code Online (Sandbox Code Playgroud)

@:Collection of @Html.DisplayFor(m => elementDescription.ModelType, "ModelDescriptionLink", new { modelDescription = elementDescription })当它试图显示该模型的资源描述的链接时,它会被抛出.

这是一条精简的路线仍然会导致异常:

[Route("Test")]
public IHttpActionResult Post([FromBody] IEnumerable<MySimpleModel> models)
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

试图访问此路由的文档http://localhost:21966/Help/Api/POST-Test会导致异常:

例外图像

我只能找到一个有相同问题的人的例子,他们的解决方案是从StructureMap切换到Ninject或避免使用null检查的异常.

这是堆栈跟踪的顶部:

[InvalidOperationException: Stack empty.]
System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) +52
System.Collections.Generic.Stack`1.Peek() +6693321
System.Web.WebPages.WebPageBase.get_Output() …
Run Code Online (Sandbox Code Playgroud)

c# structuremap asp.net-web-api2 structuremap3

7
推荐指数
1
解决办法
1052
查看次数

ASP.NET Core 应用程序日志未写入 Azure 应用服务中的 Blob

我已为 Azure 上的应用程序服务启用应用程序日志记录到 blob。

  • 我可以从 Azure 门户查看日志流中的日志
  • 我可以看到xxxxx-#####.applicationLog.csv在我创建的 Azure 存储帐户中每小时都会创建一个类似的文件,但该文件实际上并不包含我的应用程序日志
  • 我尝试在同一帐户上启用 Web 服务器日志记录到存储,这确实有效 - 我可以在不同的文件中看到 HTTP 请求的日志
  • 我尝试创建一个新的存储帐户并指向它以获取日志,但它没有改变任何内容

配置详情:

  • 该应用程序使用 ASP.NET Core 2,在 .NET Framework 4.6.1 上运行
  • Program.cs我通过以下方式配置登录:(.ConfigureLogging(log => log.AddAzureWebAppDiagnostics())这在 .NET Framework 而不是 .NET Core 运行时运行时显然是必要的)

总之:当我在 Azure 门户中以这种方式配置 Azure 存储时,不会在 Azure 存储中创建包含应用程序日志的文件。

c# asp.net azure azure-storage asp.net-core

6
推荐指数
1
解决办法
4316
查看次数

匹配未被特定字符包围的字符的正则表达式模式

我试图使用正则表达式来匹配某个字符,只有当它不与某个字符直接相邻时。(对于 Calibre 中的电子书)

具体来说,我想匹配所有不在句子末尾的内容,这意味着它们将位于常规字符之间,而不是尖括号或空格之间。我认为”[^<]会起作用,但这会同时选择引号和下一个字符,而不仅仅是字符本身。我也不知道如何做 OR 来检查空间。我假设它会是这样的,”[^<]|[^ ]但这也不对。

这是我想要匹配的示例:

在尖括号旁边: <p class="calibre1">“I”m tired!”</p>

旁边空间: <p class="calibre1">“I”m tired!” he said</p>

I”m应选择其中的引号(并且只选择引号本身)

如果对此有明显的答案,我很抱歉,但我一直在阅读 Python 的正则表达式文档,但我无法弄清楚。:(

python regex calibre

2
推荐指数
1
解决办法
3571
查看次数