我有一个在 IIS7 下运行并启用了表单身份验证的 ASP.net MVC3 应用程序。在应用程序的一个文件夹下还有一个共同托管的 Nancy 服务。
问题是,只要 Nancy 服务返回 401(未授权)状态,请求就会自动重定向到登录页面。
有没有办法告诉 ASP.net 忽略从该文件夹返回的 401 错误,只返回原始的 json 响应?
我有一个在 IIS7 下运行并启用了表单身份验证的 ASP.net MVC3 应用程序。在应用程序的一个文件夹下还有一个共同托管的 Nancy 服务。
问题是,只要 Nancy 服务返回 401(未授权)状态,请求就会自动重定向到登录页面。
有没有办法告诉 ASP.net 忽略从该文件夹返回的 401 错误,只返回原始的 json 响应?
我知道这是旧的,但我还是会回复。
听起来你有 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>
您在这里需要做的就是允许匿名访问,这可以通过添加authorization
到system.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>
这现在应该忽略文件夹的身份验证。
在控制器中,您可以使用AllowAnonymousAttribute绘制动作(或整个控制器)
[AllowAnonymous]
public ActionResult DoSomething()
{
return View();
}