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 リンクを試しましたが、問題を解決できませんでした。
私は何をすべきか?
これが薄暗い遠い過去から何かをドラッグしている場合はダンノ..しかし、私はこの問題を抱えていた..それを修正した..私は共有したいと思った
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" %>
保存してください。試してみてください。
私のために働いた..
私は同じ問題を抱えていて、長い間探していました!
私は以下を含む多くのことを試しました:
それらのどれも私のために働いた。いくつかの検索、テスト、呪いの後、最終的に問題を見つけました:アプリケーション(Webサービス)が誤ってホストされていました。
背景を少し説明します。
2つのソリューションを含むプロジェクトがありました。1つのソリューションは作成したWebサイト(html、javascriptなど)で、もう1つのソリューションにはビジネスロジック、データベースモデル、およびWebサービスを含むフォルダーが含まれていました。明らかに、webservicesフォルダーには.asmxファイルとそれらのコードビハインドが含まれていました。
これらを次の方法でホストしていました。
より視覚的に:
これにより、次のURL「 http://website/webservices/myWebservice.asmx 」が生成され、「Could not create type」エラーが発生しました。
さて、少し試してから、webserviceフォルダーではなく、rootとしてデータコアから開始してwebserviceアプリケーションをホストしようとしました。
視覚的に:
明らかに以前と同じURLを使用すると、「ファイルが見つかりません」というエラーが表示されます。ただし、次のURL「 http://website/webservices/webservices/myWebservice.asmx 」を使用すると、ついにworkingWebサービスページ!
小さなURLの内訳:
Data Coreの「webservices」フォルダーから直接webservicesをホストしていたため、サーバーはコンパイルされたWebservicesのDLL(binフォルダー)、私はより深いレベルでホストしていたので。
構成を変更し、「データコア」フォルダーからWebサービスをホストすると、IISサーバーはbinフォルダーを「参照」し、Webサービスを正常にホストできます。^ _という正しいURLを使用する場合^
これが明確で、問題の解決に役立つことを願っています!
問題を引き起こす可能性がある別のこと。プロジェクト用のアプリケーションを作成していませんIIS自体をスローします。
スタート-> IISの検索
それを開く!!
デフォルトWebサイト、またはサービスを公開する予定のWebサイトを右クリックします。
アプリケーションの追加 ... エイリアスの入力 ex。 "MyWebService" ... 物理パスを選択。私の場合、C:\inetpub\wwwroot\MyWebService
これは私のデフォルトのWebサイトのパスです。
次に、Visual Studioをスローして公開するときに、そのフォルダーを選択します。または、コードファイルをコピーします。
私は今朝この問題を抱えていて、Googleはここに私を上陸させたが、これらの答えはどれも役に立たなかった。しかし、少なくとも私の場合は-何が間違っていたかを理解したので、他の人に役立つ場合に備えて共有したいと思いました。
私が取り組んでいるアプリケーションの他の部分とのソリューションで、数か月間正常に機能していたWebサービスがありました。昨日、リリースブランチで何かを修正する必要があったため、別のディレクトリにあるソリューションのコピーでVisual Studioを開きました。 Visual Studioは、役立つことを決定し、すべての仮想ディレクトリをIISでプログラムがリリースフォルダー内にある場所にマップし直しました(ビルドするのが面倒だったのに、しなかった場合)。 Webサービスにアクセスしようとすると、IISはasmxがあり、binフォルダーはないリリースバージョンを指していました。
私の開発ソリューションで[Webプロパティ]タブを開き、[仮想ディレクトリの作成]をクリックすると、それが開発バージョンに再マップされ、すべてが再び良好になりました。
これはGlennが言ったことの要約に過ぎないと確信していますが、アプリケーションがディレクトリ構造の1レベル高いディレクトリから作成されたため、この問題に遭遇しました。
たとえば、私のWebサービスはSiteProject_1/SiteProject_2/service.asmxにありました
もともとSiteProject_1は、IIS内でアプリケーションに変換したものです。 IIS内でそのアプリケーションを削除し、代わりにSiteProject_2をアプリケーションにすることで問題を解決できました。