2011-08-01 6 views
0

JSONP対応Webサービスからデータを取得するためのHTMLファイルとJavaScriptファイルが用意されています。私の問題は、サービスが実行されているディレクトリにhtmlと.jsファイルを配備すると問題なく実行されますが、別のホストからhtmlと.jsファイルを実行しようとすると、 WebサービスとJavaスクリプトは私にサーバー500エラーを与えます。JavaScriptファイルからのクロスドメインJSONP要求を許可するIIS構成

私はChromeの開発ツールを使用してxmlhttprequest呼び出しを表示していますが、これは私が500エラーを受け取っている唯一の理由です。

私はすでにかなりの研究をしており、応答メソッドのタイプをjsonに設定し、usehttpgetをtrueに設定してスクリプトメソッドタグを設定する必要があることを発見しました。別の投稿で言及されているように、プロジェクト内のclientaccesspolicy.xmlを設定しようとしました。すべて無駄に。

私はコードのディレクトリにhtmlファイルとjavascriptファイルを置いてIDE経由でWebサービスを実行すると、WebサービスやIIS側での設定上の問題であると確信しています。 Webサービスを呼び出すhtmlと私は私の応答をうまく取得します。しかし、htmlとjavascriptが実行されているコードの作業ディレクトリにないと、サーバーエラー500が発生します。

どうすれば解決できますか?

EDIT また、私は助け無しに私のweb.configファイルに < jsonSerialization maxJsonLength =「5000000」/> を追加しましたので、500エラーが要求サイズに基づいていたという記事を見つけました。

答えて

0

IISの設定についてよく分かりませんが、ドメイン間の問題を回避するためにJSONPを使用しようとすると、XMLHttpRequestが表示されません。 JSONPの仕組みは、あなたが呼び出すためにしようとしているURLでスクリプトタグを挿入することをある:

var tag = document.createElement("script") 
tag.src = "http://someurl.example.com?args=42&callback=wrapperFunction" 
document.body.appendChild(tag) 

サーバは、それがこのようなFunctionCallをで応答、だラップするコールバッククエリ文字列引数を使用しています。

wrapperFunction({some: 'response', arg: 42}); 

この理由は、script-tagsはクロスドメインポリシーに従う必要がないため、このようにしないとJSONPを使用していないためクロスドメインルールに従わなければなりません。

これは本当にIISの設定に問題がある場合、私は謝り、私はちょうどJSONPと一緒に述べたXMLHttpRequestを見て、 "ねえ、間違っています!

+0

xmlhttprequestはChrome Java ScriptデバッガーのJSON形式の応答を表示できる部分に過ぎませんでした。私は実際にインターネット上で最初に見つけたクラスのバージョンを実装して動作させましたが、後でJavaスクリプトをコーディングしたグループも使用しているように見えます。 [CodeProjectのから]この記事(http://www.codeproject.com/KB/webservices/ASPNET_JSONP.aspx) ダウン約半分の方法見つけ 私が使用しているコードはJsonHttpModuleクラスに基づいており、私はする必要がなかったですVBに変換する...しかし、私の問題は、私は複数のJQUERYタグを取得していることです。 – jnusz

+0

スペースがなくなりました...ここに私の応答のサンプルがあります: jQuery1620976034790975973_1312299185126(jQuery1620976034790975973_1312299185126(); jQuery1620976034790975973_1312299185126({"__ type": "OrionNetWebServices。"、" LastName ":" "、" ErrorMessage ":"一時デバイスの有効化を検証できません。不明なエラーが発生しました。 "、" ErrorAction ":" none "}}); jQuery1620976034790975973_1312299185126();); 私は余分なものを手に入れている理由についての助けを歓迎します – jnusz

+0

OK、私は私の最後の2つの記事の馬鹿。私は問題を見つけた、それは私が応答フィルタを一方向に実装しようとしていたということだった。問題は、私は私の最初の方法私のiis。@AHMのルートにあるweb.configを手伝ってくれてありがとう。 – jnusz

関連する問題