2011-11-09 20 views
18

エラー:Webサービスでメソッドを呼び出すときに一時クラス(結果= 1)を生成できません。私はVS 2008 C#ASP.NET 3.5を使用しています。私は自分のアプリケーションにリモートWebサービスを呼び出す。エラー:一時クラス(結果= 1)を生成できません... Webサービスでメソッドを呼び出すとき

Server Error in '/' Application. 
Server was unable to process request. ---> Unable to generate a temporary class (result=1). 
error CS2001: Source file 'C:\WINDOWS\TEMP\6sbkwt2d.0.cs' could not be found 
error CS2008: No inputs specified 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> Unable to generate a temporary class (result=1). 
error CS2001: Source file 'C:\WINDOWS\TEMP\6sbkwt2d.0.cs' could not be found 
error CS2008: No inputs specified 


Source Error: 

Line 775:  [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CheckLogin", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] 
Line 776:  public System.Data.DataSet CheckLogin(string uname, string pswd) { 
Line 777:   object[] results = this.Invoke("CheckLogin", new object[] { 
Line 778:      uname, 
Line 779:      pswd}); 


Source File: c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\14127ae4\96323535\App_WebReferences.u9ldrmk1.0.cs Line: 777 
+1

コードを教えてください。どのようにWebサービスを呼び出していますか? Webservicesインターフェイスとは何ですか?呼び出しているwebservice関数のコードもありますか? –

+0

[System.InvalidOperationException:一時クラス(結果1)を生成することができません]の重複可能性(http://stackoverflow.com/questions/657993/system-invalidoperationexception-unable-to-generate-a-temporary-class- result-1) – V4Vendetta

+0

@Wouter私のWebサービスの呼び出しコードは以下の通りです:return objWEB.CheckLogin(username、password); WebReferenceを使用して名前空間を追加しました。 Webサービスオブジェクト(objWEB)を作成しました。WebReference.Service objWEB = new WebReference.Service(); –

答えて

34

まず、クレジットの対象となるクレジットOPはこの問題を解決し、質問のコメント欄に答えました。しかし、私は多くの人々がStackOverflowに来て、その質問を読んでコメントを見ないことを理解しています。したがって、私はここで上記の答えを中継しています。これが有用であるかどうかを質問してください。

この問題はIISのWebサービスのアプリケーションプールに関連付けられているアカウントにC:\Windows\Tempフォルダに対する読み取り/書き込みアクセス許可がないために発生します。アカウントにこのフォルダへのアクセスが必要な理由はわかりませんが、それはありません。私の偶然の観測から、それはちょうどTempフォルダにランダムな名前の空のファイルを書き込むように見えます。

この問題を解決するには、C:\Windowsフォルダを参照し、Tempフォルダを右クリックします。 プロパティを選択し、セキュリティタブをWebサービスアプリケーションプールに関連付けられたアカウントに追加します。 OKボタンを押し、IISに移動してアプリケーションプールをリサイクルします。これにより、Webサービスのリクエストが修正されます。

このエラーの周囲の状況が少しでも欺かれていることは注目に値する。私はこの問題に5年以上かけて数回遭遇しました。 Webサービスを公開し、関連付けられたasmxページを正常に参照し、Webサービスメソッドの概要を見ることができるので、それほど目立たないのはなぜですか。さらに、Visual StudioプロジェクトはWebサービスへの参照を追加することができ、Visual StudioはVSプロジェクトのWebサービスに関連するすべてのクラスを自動的に生成します。

これは、Webサービスでメソッドを実行するように最初にリクエストするまで、すべてが適切に機能しているという印象を与えます。 Webサービスは、tempディレクトリへのアクセスが必要なため、コードの実行を開始すると失敗します。

このバグに関する詳細は、マイクロソフト社の承諾を受けたbug reportにあります。

0

あなたのWebサイトがアプリケーションプール "DefaultAppPool"で動作せず、独自のプールを選択した場合に起こります。 この場合、プールの名前を持つユーザーを追加する必要があります。

関連する問題