web-dev-qa-db-ja.com

パーサーエラー:タイプを作成できませんでした

Webサービスを作成し、ローカルマシンで公開しました。その後、サーバーにアップロードしました。

今、私はウェブサービスにアクセスしようとしたときに、次のエラーが表示されます:

Parser Error Message: Could not create type 'webservice.myservice'

Source Error: Line 1: <%@ WebService Language="C#" CodeBehind="myservice.asmx.cs" Class="webservice.myservice" %>

This リンクを試しましたが、問題を解決できませんでした。

私は何をすべきか?

34
Meghan

これが薄暗い遠い過去から何かをドラッグしている場合はダンノ..しかし、私はこの問題を抱えていた..それを修正した..私は共有したいと思った

Visual StudioでWebサービスを作成すると(2010を使用していますが、他のWebサービスでも同じだと思います)、Service1.asmxというファイルを作成します

名前をMyService.asmx(または何でも)に変更したくなるでしょう

それからあなたは中を見て線を見るでしょう

public class Service1: System.Web.Services.WebService

に変更します

public class MyService: System.Web.Services.WebService

それを実行しようとするとエラーが発生します

タイプ 'MyProject.MyService'を作成できませんでした

cosはまだクラスがService1と呼ばれていると考えています。

.asmxファイルを右クリックして[マークアップを表示]を選択すると、まだ表示されます

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.Service1" %>

に変更する

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.MyService" %>

保存してください。試してみてください。

私のために働いた..

50
JohnW

私は同じ問題を抱えていて、長い間探していました!

私は以下を含む多くのことを試しました:

それらのどれも私のために働いた。いくつかの検索、テスト、呪いの後、最終的に問題を見つけました:アプリケーション(Webサービス)が誤ってホストされていました。

背景を少し説明します。

2つのソリューションを含むプロジェクトがありました。1つのソリューションは作成したWebサイト(html、javascriptなど)で、もう1つのソリューションにはビジネスロジック、データベースモデル、およびWebサービスを含むフォルダーが含まれていました。明らかに、webservicesフォルダーには.asmxファイルとそれらのコードビハインドが含まれていました。

  • 事業
    • データコア
      • データベースモデル
      • ビジネスの論理
      • ウェブサービス
        • myWebservice.asmx
    • ウェブサイト

これらを次の方法でホストしていました。

  • 私のWebサイトは、Webサイトフォルダーをルートフォルダーとする新しいサイトとしてホストされました
  • Webサービスフォルダーとしてwebservicesフォルダーを使用して、WebサイトでアプリケーションとしてホストしていたWebサービス

より視覚的に:

  • IIS 7
    • 私のウェブサイト=>「ウェブサイト」フォルダを指しています
      • Webservices Application => Data Coreの「Webservices」フォルダーを指す

これにより、次のURL「 http://website/webservices/myWebservice.asmx 」が生成され、「Could not create type」エラーが発生しました。

さて、少し試してから、webserviceフォルダーではなく、rootとしてデータコアから開始してwebserviceアプリケーションをホストしようとしました。

視覚的に:

  • IIS 7
    • 私のウェブサイト=>「ウェブサイト」フォルダを指しています
      • Webservices Application =>「データコア」フォルダーを指しています。

明らかに以前と同じURLを使用すると、「ファイルが見つかりません」というエラーが表示されます。ただし、次のURL「 http://website/webservices/webservices/myWebservice.asmx 」を使用すると、ついにworkingWebサービスページ!

小さなURLの内訳:

  • http:// website/=>「ウェブサイト」フォルダからの私のウェブサイト
    • webservices/=>「データコア」フォルダーに相当
      • webservices/=>「データコア」フォルダー内の「webservices」フォルダー
        • myWebservice.asmx =>「Data Core」フォルダー内の「webservices」フォルダー内のwebserviceファイル

Data Coreの「webservices」フォルダーから直接webservicesをホストしていたため、サーバーはコンパイルされたWebservicesのDLL(binフォルダー)、私はより深いレベルでホストしていたので。

構成を変更し、「データコア」フォルダーからWebサービスをホストすると、IISサーバーはbinフォルダーを「参照」し、Webサービスを正常にホストできます。^ _という正しいURLを使用する場合^

これが明確で、問題の解決に役立つことを願っています!

8
Glenn

問題を引き起こす可能性がある別のこと。プロジェクト用のアプリケーションを作成していませんIIS自体をスローします。

スタート-> IISの検索

それを開く!!

デフォルトWebサイト、またはサービスを公開する予定のWebサイトを右クリックします。

アプリケーションの追加 ... エイリアスの入力 ex。 "MyWebService" ... 物理パスを選択。私の場合、C:\inetpub\wwwroot\MyWebServiceこれは私のデフォルトのWebサイトのパスです。

次に、Visual Studioをスローして公開するときに、そのフォルダーを選択します。または、コードファイルをコピーします。

5
hasan

私は今朝この問題を抱えていて、Googleはここに私を上陸させたが、これらの答えはどれも役に立たなかった。しかし、少なくとも私の場合は-何が間違っていたかを理解したので、他の人に役立つ場合に備えて共有したいと思いました。

私が取り組んでいるアプリケーションの他の部分とのソリューションで、数か月間正常に機能していたWebサービスがありました。昨日、リリースブランチで何かを修正する必要があったため、別のディレクトリにあるソリューションのコピーでVisual Studioを開きました。 Visual Studioは、役立つことを決定し、すべての仮想ディレクトリをIISでプログラムがリリースフォルダー内にある場所にマップし直しました(ビルドするのが面倒だったのに、しなかった場合)。 Webサービスにアクセスしようとすると、IISはasmxがあり、binフォルダーはないリリースバージョンを指していました。

私の開発ソリューションで[Webプロパティ]タブを開き、[仮想ディレクトリの作成]をクリックすると、それが開発バージョンに再マップされ、すべてが再び良好になりました。

0
dwilliss

これはGlennが言ったことの要約に過ぎないと確信していますが、アプリケーションがディレクトリ構造の1レベル高いディレクトリから作成されたため、この問題に遭遇しました。

たとえば、私のWebサービスはSiteProject_1/SiteProject_2/service.asmxにありました

もともとSiteProject_1は、IIS内でアプリケーションに変換したものです。 IIS内でそのアプリケーションを削除し、代わりにSiteProject_2をアプリケーションにすることで問題を解決できました。

0
Scott