首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >本地环境中的Elmah.MVC返回403

本地环境中的Elmah.MVC返回403
EN

Stack Overflow用户
提问于 2018-08-16 20:37:12
回答 1查看 57关注 0票数 1

我在一个正在处理的项目中安装了Elmah.MVC,并试图浏览/elmah,但总是收到以下错误提示:

您正尝试从远程计算机访问ELMAH,但当前配置为不允许远程访问。您可以通过将以下部分添加到此网站的配置文件中来启用远程访问:

代码语言:javascript
运行
复制
<configuration>
         <configSections>
             …
             <sectionGroup name="elmah">
                 <section name="security" type="Elmah.SecuritySectionHandler, Elmah" />
             </sectionGroup>
             …
         </configSections>
         <elmah>
            <security allowRemoteAccess="yes" />
         </elmah>
         …
     </configuration>

问题是,我在本地机器上以调试模式运行应用程序,而不是远程运行。

我的Web配置如下所示:

代码语言:javascript
运行
复制
<configuration>
  <configSections>
    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
  </configSections>
  ......
  <appSettings>
    <add key="elmah.mvc.disableHandler" value="false" />
    <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
    <add key="elmah.mvc.requiresAuthentication" value="false" />
    <add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
    <add key="elmah.mvc.allowedRoles" value="*" />
    <add key="elmah.mvc.allowedUsers" value="*" />
    <add key="elmah.mvc.route" value="elmah" />
    <add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
  </appSettings>
  ......
  <httpModules>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
  </httpModules>
  ......
  <system.webServer>
    <modules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
  </system.webServer>
  ......
  <elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Elmah" />
    <security allowRemoteAccess="false" />
  </elmah>
</configuration>

我以前在其他项目中使用过Elmah,但没有遇到这个问题。我使用的是Visual Studio 2017、MVC5和.NET框架4.5.2

有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-28 05:45:00

我也有同样的问题。我确定是在本地访问,我尝试了"localhost“和"127.0.0.1”。但我可以让它与另一个较小的MVC项目一起工作,至少是远程的。

比较两者,我注意到elmah.corelibrary的版本中的差异,我现在相信是最新版本1.2.2导致了这个问题。

所以,我替换了2个dll,现在

  • Elmah.dll v1.2 (v1.2.13605.2128) (不是1.2.2或1.2.14706.0?)
  • Elmah.Mvc.dll v2.1.2

并更新了package.config:

代码语言:javascript
运行
复制
<package id="elmah.corelibrary" version="1.2" targetFramework="net461" />
<package id="Elmah.Mvc" version="2.1.2" targetFramework="net461" />

在根web.config中,我有以下与elmah相关的行

在configSections部分中:

代码语言:javascript
运行
复制
<sectionGroup name="elmah">
    <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
    <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
    <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
    <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
  </sectionGroup>

在appSettings部分中:

代码语言:javascript
运行
复制
<add key="elmah.mvc.disableHandler" value="false" />
  <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
  <add key="elmah.mvc.requiresAuthentication" value="false" />
  <add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
  <add key="elmah.mvc.allowedRoles" value="*" />
  <add key="elmah.mvc.allowedUsers" value="*" />
  <add key="elmah.mvc.route" value="elmah" />
  <add key="elmah.mvc.UserAuthCaseSensitive" value="true" />

在system.web部分中:

代码语言:javascript
运行
复制
<httpModules>
          <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
  </httpModules>

在system.webserver部分中:

代码语言:javascript
运行
复制
<modules>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>

在configuration下

代码语言:javascript
运行
复制
<elmah>
   <security allowRemoteAccess="true" />
</elmah>

我费了很大力气才让这一切正常工作。当然,最后一个属性可以设置为false (并且它在本地仍然有效),我希望它对您也有效!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51877280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档