使用MVC和WebAPI避免Resharper <location> web.config警告

Ian*_*ths 13 asp.net-mvc resharper web-config asp.net-web-api

如果ReSharper 7.1.1代码检查涉及与源树中的文件夹不直接对应的URL,则会错误地<location>web.config文件中的元素报告为冗余.如果您使用的是ASP.NET MVC或Web API,则URL路径与任何特定的物理文件夹不直接对应是正常的.

如果你运行解决方案范围的检查,你会得到两个警告,我已经能够禁用其中一个,但我无法弄清楚如何禁用第二个.

第一个是"冗余位置元素"警告.ReSharper淡出整个位置部分.这是一个淡出的例子:

<location path="FederationMetadata">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

如果您通过ACS使用联合登录,并且希望为此提供元数据端点,则需要此配置.但是这个名字没有相应的路径.

(严格来说,这个特定与MVC或Web API无关.我给出了这个例子,因为它很常见.但是,我的项目还有几个<location>元素对应于通过MVC和Web API路由配置处理的路径,他们有同样的问题.根本原因似乎是相同的:ReSharper在项目中看不到与此位置相对应的任何内容,因此它错误地断定它是错误的.它折磨MVC和Web API控制器,以及任何路径由于像模块这样的东西可用.)

摆脱这个第一个警告很容易:你可以在Inspection Severity设置中关闭它.

然后你得到第二个警告:"Location元素未使用:在FederationMetadata中找不到项目项"(对于每个具有相应<location>元素的控制器都有类似的警告).

此选项仅出现在检查整个解决方案时出现的"检查结果"面板中.查看源文件本身时,不会显示任何常用的检查小部件.奇怪的是,这个似乎没有被禁用的选项.

我知道你可以右键单击并选择"隐藏..."(虽然看起来这是一个"冗余位置"问题,我已经在设置中禁用了),但据我所知,隐藏检查结果是我的机器的本地.我想配置团队共享的dotsettings,以便它不会在任何地方显示此警告.

我的目标是为所有用户提供干净的检查结果,而不会让每个用户隐藏结果.Resharper虚假地报告了这个问题 - web.config很好,只是R#误解了它.有谁知道我怎么能让第二个警告消失?(或者,更好的是,有什么方法可以让R#知道这些'隐藏'位置确实存在吗?)

jhi*_*den 10

我刚添加了这个:

  <!-- ReSharper disable WebConfig.RedundantLocationTag -->
  <!-- ReSharper disable WebConfig.WebConfigPathWarning -->
  <location path="api">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- ReSharper restore WebConfig.RedundantLocationTag -->
  <!-- ReSharper restore WebConfig.WebConfigPathWarning -->
Run Code Online (Sandbox Code Playgroud)


Ian*_*ths 0

这似乎有两部分:

  1. 配置 Web 路径是处理这两个错误的最佳方法
  2. 显然,您必须手动将设置从DotSettings.user文件移至共享团队文件中

如果您单击有问题的路径属性(将插入符号放入属性值中),然后等待 R# 弹出窗口出现,其菜单应该提供一种创建“路径映射”或编辑该路径的现有映射的方法。地点。您可以使用它来告诉 R# 与路径对应的实际文件在哪里。或者,由于在这种情况下没有这样的文件,您可以将此路径的操作设置为“忽略”。

完成此操作后,上述警告都不会出现。

不幸的是,“路径映射”对话框(如“过滤器问题”对话框)是只有“保存”按钮而没有“保存到”按钮的对话框之一,无法控制设置的去向。实际上,它们似乎最终出现在<project>.DotSettings.user网络项目的文件中。

但事实证明,如果您在文本编辑器中打开该文件,从其中剪切设置,然后将它们粘贴到团队共享的解决方案设置中,则它仅适用于文件。这似乎以一种适用于项目中每个人的方式消除了这两个警告。

(您应该能够对“过滤问题”设置使用类似的技巧,尽管您需要查看不同的位置。这些最终会出现在您的全局设置中,但您可以使用“管理选项”对话框导出它们,然后您可以打开导出的设置,并将其复制到团队共享的解决方案设置中。)