QA@IT

IIS7 WebService でsvcをIEで指定して開くと、リソースがありませんとなる

11586 PV

環境
Windows2008サーバ IIS7.0
フレームワーク4.0
Visual studio2010

で、Webサービスを作成して、公開。
別のクライアントアプリからWebサービス経由でOracle11gのデータベースへアクセルする

サーバ上では、IEで
「http://サーバ名/XXX/ABC.svc」と指定するとサービスが正常に作成されたページになるが

クライアントで、同じアドレスをたたくと、

リソースが見つかりませんでした。
説明: HTTP 404. 探しているリソース (または、その依存関係の 1 つ) が削除されたか、名前が変更されたか、また一時的に使用できません。以下の URL のスペルが正しいことを確認してください。

となります。
クライアントアプリもサーバでは動作しますが、クライアントからは動作しません。
何か設定がたりないのでしょうか?よろしくお願いします。

  • .NET 4.0でWebサービスとありますが、これはプロジェクトテンプレートを使用せずにアイテムの追加でWebサービスを追加したという認識でいいですか?(プロジェクトテンプレート(VSの新しいプロジェクトで出てくるテンプレート)には、.NET 4は存在しないので手動で用意する必要があります。) -
  • ちなみに普通に新しいプロジェクト>VB>WebにあるWebサービスを選んでいた場合は3.5になると思います。
    またはWCFのサービスになると思います。このあたりがわかる場合は教えてください。
    -

回答

注意:解決とマークされていますが、本質問の質問者はこの方法では解決に至りませんでしたので参考情報としてご利用ください。

404でそのメッセージであればサーバーへの通信はできていると思います。

サーバーマネージャの機能の追加を開いてみて、
.NET Framework 4.0の機能の中にあるWCF アクティブ化HTTP アクティブ化の状態はどうなっていますか?


追記:

アクティブ化はローカルで動いているので有効化されていますよね?

いろいろ探してみましたが以下のような情報を見つけました。
自分でも整理できてないのですが、.svcが404となる事象の多くは スクリプトマップの登録を行うことで解決しているようです。

この投稿が一番状況に近そうです。

『 WCF Service works locally but returns 404 on remote server』
(WCF サービスがローカルでは動作するが、リモートサーバーは404を返す)
http://forums.asp.net/t/1807824.aspx?WCF+Service+works+locally+but+returns+404+on+remote+server

端折りますが、

  • 開発サーバーではうまくいく
  • アドレスのパターンで実行してみたがうまくいかなかった
  • 新しくサイトをつくって発行したプロジェクトを参照するようにして、hostファイルにdev.mydomain.com を追加した。
  • エラーが404.17になった

ぐぐって↓のサイトにあるようにコマンドを実施
http://daniel.streefkerkonline.com/iis-7-5-wcf-error-the-requested-content-appears-to-be-script-and-will-not-be-served-by-the-static-file-handler/

You will need to run ServiceModelReg.exe -i"%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation" ディレクトリで実行してスクリプトマップを登録

引用ばかりですいませんが参考までに。

  1. http://forums.asp.net/t/1807824.aspx?WCF+Service+works+locally+but+returns+404+on+remote+server

  2. http://daniel.streefkerkonline.com/iis-7-5-wcf-error-the-requested-content-appears-to-be-script-and-will-not-be-served-by-the-static-file-handler/

  3. http://social.msdn.microsoft.com/Forums/en-US/f447c6df-6402-4a13-875c-925445fd7be8/hosting-service-on-iis?forum=adodotnetdataservices

  4. http://social.msdn.microsoft.com/Forums/vstudio/en-US/39571e42-aca7-469d-8c68-aa59c2da4fcc/sudden-error-could-not-load-type-systemservicemodelactivationhttpmodule-urgent-help-please?forum=wcf

編集 履歴 (3)
  • 色々ありがとうございます。
    試してみましたが、現象は、解消しませんでした。
    ASP.netで作成したWEBページはうまくいきますし、
    サーバのローカルだと以前どおり、正常動作します。
    -

追加情報です

サーバのイベントビューアでもエラーがでており
WebHost で要求の処理に失敗しました。
送信者の情報: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/5843455
例外: System.Web.HttpException (0x80004005): サービス '/SMS2WebService/UriageKanriService.svc' は存在しません。 ---> System.ServiceModel.EndpointNotFoundException: サービス '/SMS2WebService/UriageKanriService.svc' は存在しません。
場所 System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)
場所 System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath)
場所 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
場所 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()
場所 System.Runtime.AsyncResult.EndTAsyncResult
場所 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
プロセス名: w3wp
プロセス ID: 3816

なっています。

編集 履歴 (0)
  • 回答済みマークがついてますが、解決したのではないのですか? そうでなければ、回答者のほうでも問題を再現できる情報をアップできませんか? -
  • すみません。このサイトの使い方になれてなくて、回答済みチェックをいれてしまったようで、まだ解決しておりません。 -
  • 簡単に再現できるなら苦労はしないですよね。まだちょっと調べてますのでなにかわかったら追記します。 -
  • いえ、問題(404 エラー)を誰でも再現できるようにコードを必要最小限に絞り込むという「苦労」は重要だと思いますよ。その過程で、原因が見つかって自己解決できる可能性が高いので。 -
  • 障害の切り分け、情報の整理という点でそれはたしかに有効だと私も思います。可能ならば検証して問題に向き合ってあげるあなたの姿勢も素晴らしいと思います。
    しかしこういうサイトには似たような問題を経験して解決方法を知っている人がいないかどうかを期待して投稿してくるのであって、解決のための一般論を習いに来ているのでもないですし、検証してみたいのは回答者側の都合でしか無いこともお忘れなく。
    -
  • 自分が検証してみたいなんて言ったおぼえはありません。問題の解決にはその原因を究明する必要がある、そのためにコードを必要最小限に絞り込むというのは有用だということが言いたいのです。そういう質問者さんの努力がないまま続けて行くと解決までにやたら時間がかかって、このサイトにノイズをふやすことにもなると思います。あなたがこのサイトの管理者で、そういう方針でやると言うならもうここには来ません。 -
  • 「問題を再現できる情報をアップできませんか?」というのを何度か見かけたので検証しようとしてるのかと思っていました。であれば「問題を再現できる情報をアップして」ではなくて「xxの構成でも起きるのか」という形が良いのでは?検証環境も用意できるできない、実施する時間がない、再現が難しいなどそれぞれ事情もあるでしょう。
    私は管理者ではありません、方針を決める立場にもありません。
    -
  • 管理者でなくて一般の参加者であれば、サイトの方針のような発言「こういうサイトには似たような問題を経験して解決方法を知っている人がいないかどうかを期待して投稿してくるのであって、解決のための一般論を習いに来ているのでもない」はいかがなものかと思いますが。 -
  • 色々とありがとうございます。
    残念ながら解決には至っておりませんが、いろいろと作業をおこなっているうちにクリックワンスページの動作もちょっとおかしくなってしまい、今、サーバの環境をいったん戻しているところです、
    -
  • > @SurferOnWww さん 「このサイト」とはしなかったのですが不足だったようですね。誤解を受けたようで失礼しました。
    -
  • > @y3a4s5u さん コメント欄汚してすみません。了解しました。質問本文のほうにもコメントで質問をつけています。わかる範囲で教えてください。 -
  • 色々試行錯誤した結果、解決にいたりました。
    IE上ではエラーが発生しますが、それでもクライアントソフトからは動作できることが確認できました。細かいところまでいろいろとありがとうございました。

    これで、クローズいたします
    -
  • 了解しました。参考までに私の方でもクリーンインストールしたWin2008にVS2010からWCFサービスをWeb配置してみましたが特に再現はしませんでした。原因が特定できなかったのは残念ですが解決されたようでよかったです。最後にコメント欄汚してしまい申し訳ありませんでした。 -
  • もし可能でしたら、参考までにIEで発生したエラーコードを教えてもらえますか? -

追加情報としては、これと絡んでかとおもいますが、今回作成したWEBサービスですが
VB.NETのアプリからWEBサービスの追加を実行するとエラーとなり追加できない状況です。
以下のエラーが表示されます

メタデータに、解決できない参照が含まれています。'http://ski-egg-ap/SMS2WebService/UriageKanniService.svc?wsdl'。
WSDL ドキュメントに解決できないリンクが含まれています。
'http://ski-egg-ap/SMS2WebService/UriageKanniService.svc?xsd=xsd0' をダウンロード中にエラーが発生しました。
基礎になる接続が閉じられました: 受信時に予期しないエラーが発生しました
転送接続からデータを読み取れません: 既存の接続はリモート ホストに強制的に切断されました。。
既存の接続はリモート ホストに強制的に切断されました。
メタデータに、解決できない参照が含まれています。'http://ski-egg-ap/SMS2WebService/UriageKanniService.svc'。
コンテンツの種類 application/soap+xml; charset=utf-8 はサービス http://ski-egg-ap/SMS2WebService/UriageKanniService.svc でサポートされていませんでした。クライアントとサービスのバインドが整合していない可能性があります。
リモート サーバーがエラーを返しました: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.
サービスが現在のソリューションに定義されている場合は、ソリューションの構築とサービス参照の追加を再試行してください。

関連サイトを調査中ですが、WEB.CONFIGの設定がたりないのでしょうか?

編集 履歴 (0)
  • すでに調査済みかもしれませんが、'text/xml; charset=utf-8'(SOAP 1.1)が期待されるが'application/soap+xml; charset=utf-8'(SOAP 1.2)でserverにアクセスしようとしている状態ですね。 -

VisualStudioでクラサバのアプリをクリックワンスで構築して、DBとのやり取り部分をWebサービスで行う
という形をとりました。

webサービスをIISへ設定して、上記の状態になったのですが、この状態でサーバ側でもクライアントの
プログラムでWebサービスを参照して指定しようとするとエラーになって設定できない状態です

編集 履歴 (2)

Webサービスを作成して、公開。

「公開」ってどこからどこへ公開しているんですか? イントラネット内? 名前解決はできてますか? ファイアウォールでブロックされてませんか?

編集 履歴 (0)
  • 下の回答に状況を追加いたしました。 -

ファイアフォールはブロックしてなく、同じIIS上のASP.NETのシステムは問題なく動作してます
公開という表現が悪かったのかもしれませんが、イントラネット内です。

また、名前解決もできております。

IISの標準のホームページも見れる状態で、ただ、「http://サーバ名/XXX/ABC.svc」だけが
リソースが見つかりませんでした。 という状態になっています。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。