4

次の方法でasmx Webサービスを取得しました

    [WebMethod]
    public string LoadRegions(Guid id)
    {
        throw new NotImplementedException();
    }

このメソッドを呼び出そうとすると、次の例外が発生します。

System.InvalidOperationException: LoadRegions Web Service method 
name is not valid.
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()

パラメータの型を Guid から文字列などに変更すると、問題はなくなります。提案?テスト目的で、Firefox から次の URL を使用してサービスを呼び出しています。

http://localhost:81/services/ContactService.asmx/LoadRegions
?id=6C388126-5787-4B63-AAFE-5BCC4EA4DF83

助言がありますか?

4

2 に答える 2

3

正式なドキュメントを見つけようとしていますが、途中で検証できるものではないため、WebMethod の入力タイプとして GUID を使用できないようです。しかし、正確なドキュメントが見つかりません。 .

おそらく文字列パラメーターのままにして、メソッドの最初の行で Guid.Parse を実行して、それが GUID であることを検証します。そうでない場合は、ユーザーに例外を送信します。これは、WebMethod で GUID を必要とする他の実装で見た方法です。

于 2010-02-05T19:22:49.547 に答える
1

実際の SOAP 呼び出しでサービスを使用してこれを試しましたか?

http GET で複雑な型を指定できるとは思えません。

また、私たち人間にとってはGUIDのみを表し、コンピューターにとっては文字列であると確信6C388126-5787-4B63-AAFE-5BCC4EA4DF83しています-基本的に型の不一致があり、適切な引数で定義されたメソッドではありません(OSに関する限り)。

于 2010-02-05T19:29:43.293 に答える