0

スタンドアロンで正常に動作する独自の Web サービスを作成しました。別のページからこの Web サービスを呼び出していますが、その時点で 500 Internal Server エラーが返されます。私はこのプロセスを初めて経験していますが、これが何を意味するのか、なぜこれが起こるのかわかりません。具体的なものは見つかりませんでしたが、Google で事前に検索すると、さまざまな回答が表示されます。

これが私の呼び出しコードです -

List<string> inputList = new List<string>();
inputList.Add("F");
inputList.Add("B");    
List<string> resultList = new List<string>();
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost/Helpers/MyService.asmx");
httpWebRequest.Headers.Add("SOAPAction", "\"http://tempuri.org/GetOutput\"");
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "POST";
JavaScriptSerializer serializer = new JavaScriptSerializer();

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = serializer.Serialize(inputList);
    streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); *****ERROR HERE

string responseText = String.Empty;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    responseText = streamReader.ReadToEnd();
}
resultList = serializer.Deserialize<List<string>>(responseText);

ここに私のWebサービスコードがあります -

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class MyService: System.Web.Services.WebService
{        
    public string GetOutput(string jsonStr)
    {
        try
        {
            /*code to format jsonStr and send it along to another web service*/

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            string responseText = String.Empty;
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                responseText = streamReader.ReadToEnd();
            }

            //this obj has a head & body
            ResponseObj response_obj = new ResponseObj();                
            response_obj = serializer.Deserialize<ResponseObj>(responseText);                
            List<string> Values = new List<string>();
            if (response_obj.head.result)
                return serializer.Serialize(response_obj.body);

            return "";                  
        }
        catch (Exception ex)
        {
               throw new Exception(ex.Message);
        }
    }
4

2 に答える 2

0

おそらく、これをデバッグする最善の方法は、Visual Studio を IIS にアタッチすることです (メニュー デバッグ/プロセスへのアタッチ...)。これにより、Web サービスのコード内で何が起こっているかを段階的に確認できます。

于 2012-04-24T22:16:36.887 に答える
0

localhost/statistics/log でエラーの詳細を確認できると読みましたが、Web.config ファイルに問題があることがわかりました。言及された行にコメントしたところ、エラーはなくなり、次の行に道を譲りました!

于 2012-04-25T17:28:18.943 に答える