यह एक अजीब बात है। मैं एमवीसी 3 चला रहा हूं और एक कस्टम एक्शन परिणाम है जो अपवादों को लपेटता है और मानक HTTP त्रुटि के साथ एक संदेश देता है।कस्टम HTTP त्रुटि विवरण वापस नहीं कर सकता दूरस्थ रूप से
public class ExceptionResult : ActionResult
{
private readonly Exception _exception;
public ExceptionResult(Exception exception)
{
_exception = exception;
}
public override void ExecuteResult(ControllerContext context)
{
var response = context.HttpContext.Response;
response.ClearHeaders();
response.Cache.SetNoStore();
response.ContentType = ContentType.Json;
var baseEx = _exception as BaseException ?? new ServerException(_exception);
var result = baseEx.GetResult();
var json = result.ToJSON();
response.Write(json);
response.StatusCode = (int)result.Status.Code;
}
}
मैं बिल्कुल मिलता है क्या मैं उम्मीद जब मैं इस स्थानीय रूप से चलाएँ:
HTTP/1.1 400 Bad Request
Cache-Control: no-store
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Date: Thu, 01 Dec 2011 19:00:03 GMT
Content-Length: 81
{"error":"invalid_request","error_description":"Parameter grant_type is missing"}
लेकिन जब मैं एक अलग मशीन से कनेक्ट करने का प्रयास मैं मानक आईआईएस त्रुटि संदेश के बजाय मिल:
HTTP/1.1 400 Bad Request
Cache-Control: no-store
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Date: Thu, 01 Dec 2011 19:02:33 GMT
Content-Length: 11
Bad Request
अद्यतन
ऐसा होना चाहिए मुझे आईआईएस पाइपलाइन में कहीं भी http मॉड्यूल है जो प्रतिक्रिया निगल रहा है और सामग्री को फिर से लिख रहा है। मैंने अनुरोध और प्रतिक्रिया लॉग करने के लिए एक मॉड्यूल लिखा और यह वास्तव में वापस लौट रहा है जो मैं उम्मीद करता हूं हालांकि वास्तव में ब्राउज़र को जो भी बनाता है वह गलत है।
2011-12-02 15:39:00,518 - ======== Request ========
2011-12-02 15:39:00,518 - GET /oauth/2/token HTTP/1.1
2011-12-02 15:39:00,519 - Cache-Control: max-age=0
2011-12-02 15:39:00,519 - Connection: keep-alive
2011-12-02 15:39:00,519 - Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2011-12-02 15:39:00,519 - Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
2011-12-02 15:39:00,519 - Accept-Encoding: gzip,deflate,sdch
2011-12-02 15:39:00,519 - Accept-Language: en-US,en;q=0.8
2011-12-02 15:39:00,519 - Host: micah-pc:8095
2011-12-02 15:39:00,519 - User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
2011-12-02 15:39:00,519 - =========================
2011-12-02 15:39:00,519 - OAuth exception occurred.
BoomTown.OAuth.OAuthException: Parameter grant_type is missing
at BoomTown.OAuth.Request.TokenRequest.GetRequestValidator() in C:\code\BoomTown\Api\BoomTown.OAuth\Request\TokenRequest.cs:line 19
at BoomTown.OAuth.Request.OAuthRequestBase.Validate() in C:\code\BoomTown\Api\BoomTown.OAuth\Request\OAuthRequestBase.cs:line 33
at BoomTown.OAuth.Request.OAuthRequestBase..ctor(HttpRequestBase request, IOAuthServiceLocator serviceLocator) in C:\code\BoomTown\Api\BoomTown.OAuth\Request\OAuthRequestBase.cs:line 28
at BoomTown.OAuth.Request.TokenRequest..ctor(HttpRequestBase request, IOAuthServiceLocator serviceLocator) in C:\code\BoomTown\Api\BoomTown.OAuth\Request\TokenRequest.cs:line 13
at BoomTown.Api.Web.Controllers.OAuth.V2.OAuthController.Token() in C:\code\BoomTown\Api\BoomTown.Api.Web\Controllers\OAuth\V2\OAuthController.cs:line 26
2011-12-02 15:39:00,520 - ======= Response =======
2011-12-02 15:39:00,520 - HTTP/1.1 400 Bad Request
2011-12-02 15:39:00,520 - Cache-Control: no-store
2011-12-02 15:39:00,520 - X-AspNet-Version: 4.0.30319
2011-12-02 15:39:00,520 - Content-Type: application/json; charset=utf-8
2011-12-02 15:39:00,520 - {"error":"invalid_request","error_description":"Parameter grant_type is missing"}
समाधान
एक छोटे से sleuthing के लिए धन्यवाद मैं यह पता लगाने में सक्षम था। मैंने आईआईएस ट्रेसिंग की स्थापना की जिसने मेरे संदेह की पुष्टि की कि यह कस्टमरॉर्म्यूल्यूल से संबंधित था जो मेरे अनुरोधों को रोक रहा था और मेरे त्रुटि संदेशों को ओवरराइट कर रहा था। मैंने
<system.web>
<customErrors />
<system.web>
सेटिंग्स के साथ बंदरगाह रखा लेकिन इसका कोई फायदा नहीं हुआ। मैं सही रास्ते पर था, लेकिन बाद से यह आईआईएस 7 कि मैं चल रहा हूँ मैं इस तरह सही web.config अनुभाग बदलने के लिए की जरूरत है:
<system.webServer>
<httpErrors errorMode="Detailed" />
</system.webServer>
अब मेरे सभी कस्टम JSON संदेशों पूरी तरह से के माध्यम से आते हैं। इस पर टैग टीम के लिए Jason Finneyfrock पर बड़ा धन्यवाद।
+1 अच्छा सवाल है, आप की पुष्टि की है कि आप परिणाम लौट रहे हैं या आईआईएस में अवरोध उत्पन्न कर रहा है? मैंने देखा कि रिमोट प्रतिक्रिया पर सामग्री-प्रकार अलग है। –