2016-08-04 19 views
0

私のasp.net mvc-4 Webアプリケーション内でこの奇妙な動作に直面しています。今私は、外部APIに文字列をアップロードするには、次のWebClient()を持っている: -WebClient()UploadString()メソッドが次のエラーを受け取りました: "リモートサーバーがエラーを返しました:(599)"渡された文字列を入れて<>

var data = JsonConvert.SerializeObject(mainresourceinfo); 
    using (WebClient wc = new WebClient()) 
        { 
         string url = currentURL + "resources?AUTHTOKEN=" + pmtoken; 
         Uri uri = new Uri(url); 
         wc.Encoding = System.Text.Encoding.UTF8; 
         wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); 

         crudoutput = wc.UploadString(uri, "INPUT_DATA=" + HttpUtility.UrlEncode(data)); 
        } 

、ここでは、私は(URLはエンコードにJSONをURLに必要とAPIドキュメントごとに、それを符号化する前に)送りますJSONオブジェクトであります: -

INPUT_DATA="{\"operation\":{\"Details\":{\"RESOURCENAME\":\"test server 500123\",\"ACCOUNTNAME\":\"1\",\"RESOURCETYPE\":\"Windows\",\"PASSWORD\":\"<1234>\",\"NOTES\":null,\"Account Type\":null,\"RESOURCEURL\":null,\"OWNERNAME\":\"admin\",\"RESOURCEGROUPNAME\":\"other CUstomers\",\"DNSName\":\"-\",\"DEPARTMENT\":null,\"LOCATION\":null,\"RESOURCECUSTOMFIELD\":[{\"CUSTOMLABEL\":\"Asset Tag\",\"CUSTOMVALUE\":\"H1007228\"}],\"ACCOUNTCUSTOMFIELD\":[{\"CUSTOMLABEL\":\"Account Type\",\"CUSTOMVALUE\":\"domain\"}]}},\"createAccount\":{\"operation\":{\"Details\":{\"ACCOUNTLIST\":[]}}}}"

私のJSONオブジェクトは、次の文字を持っている任意の値が含まれている今場合<または>次のエラーを取得するWebクライアントのUploadString方法: -

System.Net.WebException occurred 
    HResult=-2146233079 
    Message=The remote server returned an error: (599). 
    Source=System 
    StackTrace: 
     at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request) 
     at System.Net.WebClient.UploadString(Uri address, String method, String data) 
     at System.Net.WebClient.UploadString(Uri address, String data) 

私は/ FirefoxのRESTClientデバッガの内部で上記のJSON文字列をコピー&ペースト、と私はRESTClientツール内で呼び出しを実行した場合一方、操作が正常に動作します...

、なぜそうであれば誰もがadivceすることができます私はasp.net WebClientからWebサービスを呼び出し、jsonオブジェクトには<または>が含まれています。次のエラーThe remote server returned an error: (599)が表示されますか? FireFoxのRESTClientデバッガを使用して同じjson文字列を使用してWebサービスを呼び出しても問題ありませんか?

最終的に、私のjson文字列にこれらの2文字のいずれかが含まれていない場合<または>すべて正常に動作します。

編集

私は、サードパーティのAPIにPOSTリクエストを作るためにRESTCleintツールを使用する場合、今,,私は、サードパーティのAPIから次の応答を見ることができます..私は、次のレスポンスヘッダを得ました: -

Status Code: 200 OK 
Cache-Control: no-store 
Content-Type: text/html;charset=UTF-8 
Date: Thu, 04 Aug 2016 15:29:37 GMT 
Pragma: no-cache 
Server: PMP 
Set-Cookie: JSESSIONID=B9CA7B68CD5706C3B82FE925B3AB3244; Path=/; Secure; HttpOnly 
Strict-Transport-Security: max-age=7776000; includeSubdomains 
Transfer-Encoding: chunked 

X-フレーム・オプション:SAMEORIGIN

答えて

1

HTTP Status 500-599問題は、要求とサーバー自体ではなく内にあることを意味しています。

FireFox's RESTClientで生成されたリクエストヘッダーが表示されている場合は、WebClientによって生成されたリクエストヘッダーと比較して、問題の特定に役立てることができます。

他のすべてがまだ同じ場合は、Webサービスでバグが見つかりました。

+0

FireFoxのRESTClient内のリクエストヘッダーをどのように知ることができますか? –

+1

私はFireFoxのRESTClientを使用しませんが、製品情報に基づいてRESTfulサービスのデバッガです。また、「デバッグ」という用語では、アドオンによって送信されているリクエストヘッダを見ることができます。 –

+0

リクエストヘッダーを知る方法を見つけようとしましたが失敗しました...何が起こっているのか分かりません。あなたがリクエストヘッダーをチェックして、それが私が現在ウェブクライアントの中で使っているものと同じであるなら、あなたがウェブサービスのバグを見つけたかもしれないと言ったのですが、どういうバグでしょうか?私のasp.netが失敗する間、FireFox RESTClientがうまく動作するのを許可する? –

関連する問題