2

我有一个在 IIS7 下运行并启用了表单身份验证的 ASP.net MVC3 应用程序。在应用程序的一个文件夹下还有一个共同托管的 Nancy 服务。

问题是,只要 Nancy 服务返回 401(未授权)状态,请求就会自动重定向到登录页面。

有没有办法告诉 ASP.net 忽略从该文件夹返回的 401 错误,只返回原始的 json 响应?

4

2 回答 2

0

我知道这是旧的,但我还是会回复。

听起来你有 MVC 网站的 Forms Auth,并使用 Nancy 作为 API/nancy

要禁用该目录路径中的身份验证,您可以location在 web.config 中添加一个,您很可能已经有一个来设置 Nancy 运行。

就像是:

<location path="nancy">
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpHandlers>
      <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/>
    </httpHandlers>
  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/>
    </handlers>
  </system.webServer>
</location>

您在这里需要做的就是允许匿名访问,这可以通过添加authorizationsystem.web. system.web像这样更新:

<system.web>
  <compilation debug="true" targetFramework="4.0" />
  <httpHandlers>
    <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/>
  </httpHandlers>

  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

这现在应该忽略文件夹的身份验证。

于 2013-04-24T11:45:29.890 回答
-1

在控制器中,您可以使用AllowAnonymousAttribute绘制动作(或整个控制器)

[AllowAnonymous]
public ActionResult DoSomething()
{
    return View();
}
于 2012-07-12T21:01:15.210 回答