Πώς να πιάσει ένα σφάλμα επιστρέφουν από wep api MVC;

ψήφοι
0

Έχω ένα web app MVC που απαιτεί ένα MVC WEP api. Το api web επιστρέφει μια εξαίρεση, αλλά δεν είναι σίγουρος πώς να το πιάσει.

Το api web πιάνει ένα λάθος και πετάει.

εισάγετε

Η μέθοδος εφαρμογή web MVC που καλεί το web api MVC.

Το «Catch Προσπαθήστε» δεν είχε πιάσει το σφάλμα.

Η γραμμή: εάν (result.IsSuccessStatusCode) δείχνει ο κωδικός κατάστασης δεν είναι επιτυχής, ώστε να πέφτει μέσα στην ψεύτικη κατάσταση που βάζει απλά ένα φιλικό μήνυμα στο viewbag.

Αντ 'αυτού, θέλω να εμφανίζεται η Error.chstml.

Πώς να ρίχνω το μήνυμα σε αυτό το σημείο να πάρει για να εμφανιστεί η Error.chstml; Η σελίδα εμφανίστηκε σε άλλα σενάρια σφάλμα. Πιστεύω ότι έχοντας το «HandleErrorAttribute» στο αρχείο Filter.config.cs.

    [HttpGet]
    public async Task<ActionResult> GetUserProfile()
    {
        if ((string)@Session[HasProfileSwitch] == False)
        {
            UserProfileForMaintViewModel userProfileForMaintViewModel = new UserProfileForMaintViewModel();
            return View(UserProfileMaint1, userProfileForMaintViewModel);
        }
        else
            try
            {
                string hostName = Dns.GetHostName();
                string myIpAddress = Dns.GetHostEntry(hostName).AddressList[2].ToString();
                UserProfileForMaintViewModel userProfileForMaintViewModel = new UserProfileForMaintViewModel();

                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(http://localhost:56224);
                    string restOfUrl = /api/profileandblog/getuserprofile/ + Session[UserName] + / + myIpAddress + / + Session[UserId];
                    client.DefaultRequestHeaders.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(application/json));

                    // Call the web api - HTTP GET.
                    HttpResponseMessage result = await client.GetAsync(restOfUrl);

                    if (result.IsSuccessStatusCode)
                    {
                        var userResponse = result.Content.ReadAsStringAsync().Result;
                        userProfileForMaintViewModel = JsonConvert.DeserializeObject<UserProfileForMaintViewModel>(userResponse);
                    }
                    else
                    {
                        // The web api sent an error response.
                        ViewBag.errormessage = Server error on getting the active userProflie. UserId:  + Session[UserId] +  Please contact the administrator.;                          
                    }

                    return View(UserProfileMaint1, userProfileForMaintViewModel);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

Αυτό είναι ό, τι έχω στα FilterConfig.cs.

Η ErrorLoggerAttribute δείχνει ένα καταγραφικό έθιμο σφάλμα.

using System.Web.Mvc;
using GbngWebClient.Helpers;

namespace GbngWebClient
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            filters.Add(new ErrorLoggerAttribute());
        }
    }
}

Αυτή είναι η Error.cshtml.

@{
ViewBag.Title = Error;
Layout = null;
}

<meta http-equiv=Cache-Control content=no-cache>
<meta http-equiv=Pragma content=no-cache>
<meta http-equiv=Expires content=-1 />

 <style>
   .center {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: auto;
    margin-top: auto;
  }
</style>

<link href=~/Content/bootstrap.min.css rel=stylesheet />

<div class=container>
    <div class=row>
        <div class=span12>
            <div class=hero-unit center>
                <h1>
                    Something Went Wrong!
                </h1>

                @if (TempData[ErrorMessage] != null)
                {
                    <div class=alert alert-danger>
                        <strong>Oops!</strong> @TempData[ErrorMessage]
                    </div>
                }
                else
                {
                    <div class=alert alert-danger>
                        An error occurred while processing your request.
                    </div>
                }

            <br />
            <p>Contact the Administrator.</p>
            <p><b>To go back home, just press this button:</b></p>
            <a href=/Home/Index class=btn btn-large btn-info><i class=icon-home icon-white>
            </i>Take Me Home</a>
            </div>
           <br />
           <p></p>
       </div>
    </div>
</div>
Δημοσιεύθηκε 19/03/2020 στις 22:02
πηγή χρήστη
Σε άλλες γλώσσες...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more