我有一個API實現在一個MVC(Asp.net 4.5.2)的ApiController下。在那個api中,我想用HttpResponseMessage(HttpStatusCode.Unauthorized)拋出一個HttpResponseException並指定一個ReasonPhrase。如何直接發送給客戶端,而不是讓asp/mvc嘗試將它們重定向到登錄頁面?直接向客戶端拋出HTTPResponseException
0
A
回答
0
Asp.Net窗體身份驗證模塊轉換如果使用UseCookieAuthentication 401至302
,然後通過改變OnApplyRedirect抑制這種
文件Startup.Auth.cs - > ConfigureAuth方法- >內部app.UseCookieAuthentication(新CookieAuthenticationOptions {提供商=新CookieAuthenticationProvider {- >添加OnApplyRedirect
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
Provider = new CookieAuthenticationProvider
{
OnApplyRedirect = context =>
{
if (!context.Request.Uri.LocalPath.StartsWith(VirtualPathUtility.ToAbsolute("~/api")))
{
context.Response.Redirect(context.RedirectUri);
}
}
}
});
1
var message = new HttpResponseMessage(HttpStatusCode.Unauthorized);
message.ReasonPhrase = "Hello";
throw new HttpResponseException(message);
但重定向取決於Web.config設置。我覺得你有一個像這樣在web.config中somethink鑑定部分:
<system.web>
<authentication mode="Forms">
<forms loginUrl="/Login/Index"></forms>
</authentication>
</system.web>
如果刪除這部分,重定向不會發生。但在這種情況下,您應該自行實施身份驗證。
相關問題
- 1. 無法拋出httpResponseException
- 2. Android客戶端套接字拋出SocketException:
- 3. RestEasy的客戶端拋出拋出java.lang.ClassNotFoundException:com.sun.ws.rs.ext.RuntimeDelegateImpl
- 4. 用於Java的Google HTTP客戶端庫拋出HttpResponseException:301永久移動
- 5. Jmx客戶端拋出InstanceNotFoundException
- 6. MongoDb直接客戶端連接
- 7. 客戶端套接字無法連接,但不拋出SocketException
- 8. 直接撥打Twilio客戶端到另一個Twilio客戶端
- 9. http客戶端,不會拋出錯誤
- 10. initMiniDFSCluster拋出NoClassDefFoundError(hadoop客戶端測試)
- 11. Java Metro客戶端拋出WstxParsingException
- 12. RAD 9 JAXWS客戶端拋出UnsupportedOperationException
- 13. JavaScript SOAP客戶端拋出Uncaught TypeError
- 14. Apache的HTTP客戶端POST拋出500
- 15. Openshift V3 Java客戶端拋出空
- 16. 蜂巢JDBC客戶端拋出的SQLException
- 17. SpanButton客戶端屬性拋出NullPointerException
- 18. Kinesis Firehose客戶端putRecord拋出UnknownOperationException
- 19. 避免向soap客戶端拋出完整的堆棧跟蹤
- 20. 如何通過wcf回調向客戶端拋出異常
- 21. 直接從客戶端訪問Mongodb
- 22. Ruby-Rails直接向客戶端提供ftp文件
- 23. asp.net filehelpers直接向客戶端寫文件
- 24. 返回CreateErrorResponse或拋出新的HttpResponseException
- 25. 從ActiveMQ的Artemis的接收與ARTEMIS-JMS客戶端拋出InvalidDestinationException
- 26. (Java/Android)客戶端套接字拋出IOException
- 27. WCF自定義FaultException拋出,但ProtocolException由客戶端接收
- 28. Twilio客戶端在接受客戶端調用時出錯
- 29. 將直接XML輸出到RAILS中的不同客戶端
- 30. 彈性搜索拋出客戶端客戶端搜索錯誤響應
我不認爲我完全理解你的指示。我已經將這個片段添加到了ConfigureAuth(app)之下的Startup.Configuration(IAppBuilder應用程序);但是我仍然被重定向到登錄。 – Roger
不在startup.configuration下面。請去文件startup.auth.cs。搜索線app.UseCookieAuthentication。在UseCookieAuthentication裏面,當你設置提供者時,複製粘貼這段代碼(重寫OnApplyRedirect) – Kaushal
啊,是的。謝謝,這正是我所需要的。 API現在可以使用auth或api錯誤返回詳細的解釋,並且應用程序的其餘部分的身份驗證不變。 – Roger