45

私の最初の WCF サービスを開発する過程で、それを使用しようとすると、「メソッドは許可されていません」というメッセージが表示され、他に説明はありません。

ServiceContract と OperationContract を使用してインターフェイスをセットアップしました。

    [OperationContract]
    void FileUpload(UploadedFile file);

実際の方法とともに:

    public void FileUpload(UploadedFile file) {};

サービスにアクセスするには、http://localhost/project/myService.svc/FileUploadと入力します が、「メソッドが許可されていません」というエラーが表示されます

何か不足していますか?

4

9 に答える 9

75

サービス メソッドで属性を使用して[WebInvoke(Method="GET")]いる場合は、大文字と小文字が区別されるため、メソッド名を「Get」や「get」ではなく「GET」と綴ってください。同じエラーがあり、それを理解するのに1時間かかりました。

于 2010-01-07T05:08:07.147 に答える
66

ブラウザがHTTPGETリクエストを送信しています。コントラクトの操作にWebGet属性があることを確認してください。

[ServiceContract]
public interface IUploadService
{
    [WebGet()]
    [OperationContract]
    string TestGetMethod(); // This method takes no arguments, returns a string. Perfect for testing quickly with a browser.

    [OperationContract]
    void UploadFile(UploadedFile file); // This probably involves an HTTP POST request. Not so easy for a quick browser test.
 }
于 2009-02-13T12:34:26.253 に答える
4

基本的な組み込み型 (、、、byteおよび配列など) はintstringWCF によって自動的にシリアル化されます。UploadedFile のようなカスタム クラスはそうではありません。

それで、ばかげた質問です (しかし、私はそれを尋ねなければなりません...): UploadedFile は ? としてマークされてい[DataContract]ますか? そうでない場合は、そうであること、および送信するクラスの各メンバーが [DataMember] でマークされていることを確認する必要があります。

[XmlSerializable] でクラスをマークすると、シリアル化する必要のあるメンバーをマークする手間をかけずにクラス全体をシリアル化できるリモート処理とは異なり、WCF では各メンバーをマークアップする必要があります。(これは.NET 3.5 SP1で変更されていると思います...)

WCF 開発のための膨大なリソースは、私たちのショップで "フィッシュ ブック" として知られているものです: Juval Lowy によるProgramming WCF Servicesです。少し無味乾燥でアカデミックな他の WCF 本とは異なり、この本は WCF サービスを構築するための実践的なアプローチを採用しており、実際に役立ちます。徹底的にお勧めします。

于 2008-09-03T05:23:37.797 に答える
2

今日、まったく同じ問題に遭遇しました。IIS をインストールしましたが、.net フレームワーク 4.6 で WCF サービスのアクティブ化を有効にしませんでした。

ここに画像の説明を入力

于 2020-06-06T21:57:05.450 に答える
1

間違ったアドレスを使用しているようです。

サービスにアクセスするには、http://localhost/project/myService.svc/FileUploadと入力します

これがクライアントコードに与えるアドレスであると仮定すると、実際には次のようになるはずです。

http://localhost/project/myService.svc
于 2008-09-03T08:04:37.520 に答える
0

ブラウザー IE からアクセスできるのは、WebGet を使用するメソッドのみです。アドレスを入力するだけで、他の http 動詞にアクセスできます

Codeples の Restful サービス スタートアップ キットを試すか、フィドラーを使用して他の http 動詞をテストできます。

于 2011-01-20T20:16:52.777 に答える
0

私の場合:新しいサーバーでサービスを構成します。ASP.NET 4.0 が正しくインストール/登録されていません。svc 拡張子が認識されませんでした。

于 2015-06-09T13:07:24.363 に答える
0

web.configに追加する必要があります

<endpoint address="customBinding" binding="customBinding" bindingConfiguration="basicConfig" contract="WcfRest.IService1"/>  

<bindings>  
    <customBinding>  
        <binding name="basicConfig">  
            <binaryMessageEncoding/>  
            <httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>  
        </binding>  
    </customBinding> 
于 2012-08-22T18:31:45.980 に答える