11

我有一个我一直在开发的 MVC ASP.Net 应用程序。当我尝试加载我被转移到login.aspx?ReturnUrl=ENCODED_REQUESTED_PATH_HERE. 在网上搜索了一番后,这非常令人沮丧,我发现这是由

WebMatrix.Data.dll
WebMatrix.WebData.dll

当我删除这些问题并在我的 IISExpress applicationhost.config 中注释掉这两行之后,问题确实消失了

<!--<add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" />-->
<!--<add name="WebMatrixSupportModule" lockItem="true" />-->

这些文件离开了一段时间,但现在它们又回来了,又导致了问题。

是什么将它们放在那里,项目中没有提及它们。

4

2 回答 2

9

它们由 ASP.NET MVC 4 项目模板附带的 NuGet 包添加。

您可以在 Microsoft ASP.NET Web Pages 2 Data Nuget Package 的用途中获得更多信息?

这些程序集提供与您的身份验证冲突的简单成员资格提供程序。您是否使用表单身份验证并且您是否正确实施了授权属性?如果您的控制器正确标记了 Authorize 属性,那么您将不会有任何问题。这些dll的存在不是问题。您的控制器未经财产授权。

于 2013-10-03T03:49:31.210 回答
3

对于突然开始在他们的 bin 中获取 WebMatrix dll(WebMatrix.Data.dll / WebMatrix.WebData.dll)的任何人:我删除它们的解决方案如下:

  1. 安装 nuget 包:
    • Microsoft.AspNet.WebPages.Data
    • Microsoft.AspNet.WebPages.WebData
  2. 然后卸载它们。

这导致将以下 [dependentAssembly] 添加到 Web.config [configuration] -> [runtime] -> [assemblyBinding]

  <dependentAssembly>
    <assemblyIdentity name="WebMatrix.WebData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>

出于某种原因,尽管有“依赖程序集”标签,但它却相反,并阻止了 WebMatrix dll 的出现。

我个人需要摆脱 WebMatrix dll 的原因是,当部署到服务器时,它会要求使用 Razor ver.2,当我包含 Razor ver.3 并处于活动状态时,会引发异常并破坏整个网站。简单地说,从服务器的 bin 文件夹中删除 WebMatrix dll 可以缓解网站的这个问题。

于 2019-11-12T23:30:07.867 回答