Web Api给出错误:500内部服务器错误

问题描述 投票:0回答:1

场景:

我有一个ASP Web API服务,接受qazxsw poi qazxsw poi来检索以前的密码。

但我有一个问题,如果我输入有效的email id email被抛出,但如果输入错误的Id "Internal server error 500",则返回带有错误消息的Json。 (如果输入了无效的email Id,那么我有一个Json并返回错误信息)

所以可以请任何一个指南做什么。

email

我的json电话..如果电子邮件ID也有效,我希望方法被点击..请帮助...

id

我的路线配置。

var urll = 'api/BeerAppRetrieve';
   // var urll = 'api/BeerApp';
    var emailId = "[email protected]";
    //$.getJSON(urll + '/' + data)
    $.getJSON(urll, { "emailId": emailId })
       .done(function (data) {
       })
       .fail(function (jqXHR, textStatus, err) {

           alert("error" + jqXHR.responseText);
           $('#txtUserName').text('Error: ' + err);
       });

控制器中的操作

c# javascript .net json asp.net-web-api
1个回答
0
投票

或许更多的评论......

虽然问题是在路线中收到电子邮件 - 它有一段时间 config.Routes.MapHttpRoute( name: "DefaultApi1", routeTemplate: "api/{controller}/{emailId}", defaults: new { emailId = RouteParameter.Optional } ); - 这会丢掉你的路由。我在以前的电子邮件地址为ID的项目中遇到了完全相同的问题

我打赌,当你用一个糟糕的电子邮件尝试它时,你正在尝试的坏字符串没有句号。

使用查询字符串,所以'api / BeerAppRetrieve?theemail = theactual @ email.com`

或更改您的路线配置以接受期间

或者您可以替换电子邮件客户端中的某些字符并将其更改回服务器端(最坏情况)

作为一个超级最坏的情况,你可以在你的web.config中添加以下内容(你应该真的避免这个其他任何请求在你的网站上通过asp.net管道..

  [EnableCors("*", "*", "GET, POST")]
  public IHttpActionResult GetForgotPassword(String emailId)
  {




MailMessage MyMailMessage = new MailMessage();
        MyMailMessage.From = new MailAddress("[email protected]");
        MyMailMessage.To.Add(emailId);
        MyMailMessage.Subject = "Forgot Password";
        MyMailMessage.IsBodyHtml = true;
        BeerAppUserClass beerAppDal = new BeerAppUserClass();
        String passwrd = String.Empty;
        try
        {
            passwrd = beerAppDal.GetUserPassword(emailId);
        }

catch (Exception exw)
{
    return Json(new KeyValuePair<String, String>("MailSend", exw.InnerException.Message));
}

if (!passwrd.Equals(String.Empty))
{


MyMailMessage.Body = "<table><tr><td>" + "Login to the site with:</td></tr> <tr><td>  UserName: </td><td>" + emailId + "</td></tr> <tr><td> Password:</td><td>" + passwrd + "</td></tr></table>";
        SmtpClient SMTPServer = new SmtpClient("smtp.gmail.com");
        SMTPServer.Port = 587;
        //SMTPServer.Host = "smtpout.secureserver.net";
        SMTPServer.Credentials = new System.Net.NetworkCredential("[email protected]", "Password@321");
        SMTPServer.EnableSsl = true;
        try
        {
            SMTPServer.Send(MyMailMessage);
            return Json(new KeyValuePair<String, String>("MailSend", "true"));
        }

        catch (Exception ex)
        {


return Json(newKeyValuePair<String,String("MailSend",ex.InnerException.Message));
        }
    }
    return Json(new KeyValuePair<String, String>("MailSend", "empty"));
}
  }

更新

在您的Javascript更改中:

.

对此

<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"> <!-- add this -->

然后改回你的路线

var urll = 'api/BeerAppRetrieve';

并将您的API控制器更改为

var urll = 'api/[email protected]';
© www.soinside.com 2019 - 2024. All rights reserved.