2013-07-11 3 views
2

У меня нет большого опыта работы с веб-приложениями, и когда я думал, что у меня это работает, что-то идет не так. Я изучил демо онлайн в C#, а затем создал свою собственную простую версию, которая, кажется, работает нормально. Все, что он делает, это взять некоторый вклад и передать его в webservice. Затем я попытался реализации аналогичной WebService в более сложных приложениях, и я получаю следующее сообщение об ошибке при отсутствии четкого указания относительно того, почему он не работает:сервер ответил статусом 500 (Внутренняя ошибка сервера) при вызове webservice

the server responded with a status of 500 (Internal Server Error) 

Это находится в пределах браузера отладчика и не выяснить, почему ,

вебсервис URL: hostlocal: ххххх/SVC/contact.asmx/ContactMessage

мой вебсервис код следующим образом:

<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _ 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<ToolboxItem(False)> _ 
Public Class contact 
Inherits System.Web.Services.WebService 

<WebMethod()> _ 
Public Function ContactMessage(ByVal clientProj As String, email As String, message As String) As String 


    Dim insert_succes As Integer = load_data("", clientProj, "", "", "", "", "", "", "", "", email, message, "") 
    Dim passedValidation As Boolean = True 

    ' here you can return a flag which you can handle on client side accordingly 
    ' if you need to 

    Return If(passedValidation, "1", "0") 

End Function 

и JavaScript, который вызывает его:

var dojoXhr; 

require(["dojo/parser", "dojo/query", "dojo/dom-class", "dojo/dom-style", 
    "dojo/on", "dojo/_base/event", 
"dojo/request/xhr", "dijit/form/ValidationTextBox", "dojo/domReady!"], 
function (parser, query, domClass, domStyle, on, event, xhr) { 

    parser.parse(); 

    var btnSubmit = document.getElementById('btnSubmit'); 

    function correctInput(div, td, msg) { 
     domStyle.set(div, 'display', ''); 
     td.innerHTML = msg; 
    } 

    on(btnSubmit, 'click', function (e) { 
     event.stop(e); 
     var clientProj = dijit.byId("clientName").get("value"); 
     var clientKey = dijit.byId("clientKey").get("value"); 
     var accessToken = dijit.byId("accessToken").get("value"); 
     var lusername = dijit.byId("lusername").get("value"); 
     var lpassword = dijit.byId("lpassword").get("value"); 
     var provid = dijit.byId("provID").get("value"); 




     var feedback = document.getElementById('feedback'); 
     var feedbackTD = query('td.feedback')[0]; 

     domStyle.set(feedback, 'display', 'none'); 

     if (!validateEmail(lusername)) { 
      correctInput(feedback, feedbackTD, 'Please enter a valid email.'); 
      return; 
     } 

     var port = document.location.port; 
     var xhrPath = '//' + document.location.hostname + (port == (80 || 443) ? '/' : ':' + port + '/') + 'SVC/contact.asmx/ContactMessage'; 

     var msgbody = { 
      clientProj: clientProj, 
      clientKey: clientKey, 
      accessToken: accessToken, 
      lusername: lusername, 
      lpassword: lpassword, 
      provid: provid 
     }; 

     xhr(xhrPath, { 
      headers: { "Content-Type": "application/json; charset=utf-8" }, 
      method: 'post', 
      data: JSON.stringify(msgbody) 
     }).then(function (data) { 
      if (data == "0") { 
       correctInput(feedback, feedbackTD, 'Your message could not be sent.'); 
       return; 
      } 
      alert('Bcrap STILL NOT WORKING NOW!'); 
      // show feedback to the user 
      domStyle.set(feedback, 'display', ''); 
      domStyle.set(document.getElementById('msgBodyOutter'), 'display', 'none'); 
      feedbackTD.innerHTML = "Message was sent successfully."; 
     }); 
    }) 
}); 

ответ

1

Я понял, в чем проблема, и это было связано с функцией xhr. В основном переданные параметры должны совпадать по имени и номеру в коде позади.

1

Ваш служба может использовать некоторую обработку исключений, чтобы уловить ошибку и записать ее в журнал событий (или что-то еще), чтобы вы могли видеть, что происходит. В качестве альтернативы, запустите его в режиме отладки через Visual Studio и выполните свой тест - он должен поймать точку останова и позволить вам пройти, чтобы узнать, в чем проблема.

+0

спасибо, что ответили. К сожалению, и я не уверен, почему он не поймает точку останова в коде; У меня есть код javascript в файле .js и он пробовал это, и он никогда не работает в xml, поэтому не уверен, как отлаживать здесь. Проблема в том, что веб-сервис не вызван так, как обрабатывать ошибки там. – vbNewbie

+0

ok выставлен, как сделать. Если бы установить IE на браузер по умолчанию – vbNewbie

+0

проблема с функцией xhr, еще не уверен – vbNewbie

Смежные вопросы