0

ASP.NET WebMethods は、.NET で動作するのに十分な "Web サービス" ではないようNew-WebServiceProxyです。それともそうかもしれませんが、初期化する方法がわかりませんか?

代わりに、次のように手動で実行してみました。

$wc = new-object System.Net.WebClient
$wc.Credentials = [System.Net.CredentialCache]::DefaultCredentials

$url = "http://www.domenicdenicola.com/AboutMe/SleepLog/default.aspx/GetSpans"
$postData = "{`"starting`":`"\/Date(1254121200000)\/`",`"ending`":`"\/Date(1270018800000)\/`"}"
$result = $wc.UploadString($url, $postData)

しかし、これにより、「リモートサーバーがエラーを返しました: (500) 内部サーバーエラー」が表示されます。だから私は少し間違ったことをしているに違いありません。

PageMethodPowerShell から my を呼び出し、エラーを発生させない方法についてのアイデアはありますか?

4

2 に答える 2

3

実際にWebMethodを使用している場合は、プロキシアプローチを再試行してください。その場合、URLリソースには拡張子が付いているはず.asmxですが、のは、標準のASP.NETページを使用していることを示しています.aspx

プロキシは、WebMethodの使用をかなり簡素化します。例:

C:\PS>$URI = "http://www.webservicex.net/uszip.asmx?WSDL"

C:\PS> $zip = New-WebServiceProxy -uri $URI -na WebServiceProxy -class ZipClass

New-WebServiceProxyを使用しようとすると、どのようなエラーが発生しますか?

于 2010-03-31T16:59:28.753 に答える
0

Domenic - 私は PowerShell の熱烈なユーザーではありませんが、ここでの顕著な問題は次のとおりです。

「PageMethods」は ScriptMethods であり、WSDL やその他の検出ベクトルを公開しないため、投稿データが urlencodedPOSTの content-typeを使用する必要があります。application/json入力が正しくありません。

WebClient の代わりに (HttpWebRequest)WebRequest.Create...... を使用してみてください。そこから、コンテンツ タイプを変更できるようにするクラスを派生させる必要があります。

たとえば、このスクリプトのようなものを使用して、単にコンテンツ タイプの引数を追加する (または単にハードコードする) ことができます。

....
$req = [System.Net.HttpWebRequest]::Create($url);

$req.ContentType = "application/json";

$res = $req.GetResponse();
....
于 2010-04-25T18:20:05.357 に答える