1

最近、共有ホスティングから GoDaddy の vps に切り替えました。共有ホスティングで問題なく動作する Web サービスがありました。私は自分のvpsの下でそれを機能させようとしています。リンクに移動すると、継続的に 500 - 内部エラーが発生します。

IIS でアプリケーションとして設定し、統合パイプを使用して独自のアプリケーション プールを作成しました。

他に何がこの問題を引き起こしている可能性があるかについてのアイデアはありますか?

編集 1: アプリケーション プールをサイトと同じアプリケーション プールを使用するように切り替えると、代わりに次のエラーが表示されます: 「パーサー エラーの説明: この要求を処理するために必要なリソースの解析中にエラーが発生しました。特定の解析エラーの詳細を確認し、ソース ファイルを適切に変更します。

パーサー エラー メッセージ: ページには <%@ webservice class="MyNamespace.MyClass" ... %> ディレクティブが必要です。

ソース エラー:

行 1: これはプリコンパイル ツールによって生成されたマーカー ファイルであり、削除しないでください。

ソース ファイル: /webservices/namesearch.asmx 行: 1 "

これが私のweb.configです

<?xml version="1.0"?>
<configuration>
  <appSettings/>
  <connectionStrings/>
  <system.web>


 <compilation debug="true" targetFramework="4.0"/>
<!--
  The <authentication> section enables configuration 
  of the security authentication mode used by 
  ASP.NET to identify an incoming user. 
-->
    <authentication mode="Windows"/>
      <customErrors mode="Off"/>

      <!--
       The <customErrors> section enables configuration 
       of what to do if/when an unhandled error occurs 
       during the execution of a request. Specifically, 
       it enables developers to configure html error pages 
       to be displayed in place of a error stack trace.

       <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
         <error statusCode="403" redirect="NoAccess.htm" />
         <error statusCode="404" redirect="FileNotFound.htm" />
       </customErrors>
    -->
    <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID"/>
  </system.web>
  <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
</configuration>

EDIT 2:そのパーサーエラーで、「ソースエラー:

行 1: これはプリコンパイル ツールによって生成されたマーカー ファイルであり、削除しないでください。

だから私はWebサービスでプリコンパイルをしようとしました。これを行うと、「アプリケーション レベルを超えて allowDefinition='machinetoapplication' として登録されたセクションを使用するのはエラーです。このエラーは、iis でアプリケーションとして構成されていない仮想ディレクトリが原因である可能性があります」というエラーが表示されます。

4

2 に答える 2

2

SoapClientを使用して Web サービスをヒットしました。これにより、Web サービスに引数をすばやく提供できます。

NameSearch.asmx.cs:line 29イベント ログ (具体的にはセキュリティ ログ) の書き込みまたは読み取りを行おうとしている可能性が高い場所にエラーがあると思われます。おそらくEventLog.WriteEntry()

ここでの問題は、舞台裏で、VerifyAndCreateSource()適切な承認なしに呼び出しが試みられていることです。

これを解決するには、セキュリティ イベント ログに適切なアクセス許可を付与します。実行中のユーザー コンテキストが NetworkService の下にある可能性があります。

IIS7の手順の実装を検討してください: Web アプリケーションがイベント ログに書き込むと、セキュリティ例外が生成されます。ここでの主なアイデアは、Network Service、またはアプリが実行されているセキュリティ コンテキストにレジストリ キーへの書き込み権限を許可することです。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog

ここに画像の説明を入力

.NET コードでスローされる完全なエラーは次のとおりです。

System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。---> System.Security.SecurityException: ソースが見つかりませんでしたが、一部またはすべてのイベント ログを検索できませんでした。ソースを作成するには、新しいソース名が一意であることを確認するために、すべてのイベント ログを読み取る権限が必要です。アクセスできないログ: セキュリティ。System.Diagnostics.EventLogInternal.FindSourceRegistration (文字列ソース、文字列 machineName、ブール値の readOnly、ブール値 wantToCreate) で System.Diagnostics.EventLogInternal.SourceExists (文字列ソース、文字列 machineName、ブール値 wantToCreate) で System.Diagnostics.EventLogInternal.VerifyAndCreateSource (文字列 sourceName) 、System.Diagnostics.EventLogInternal.WriteEntry の文字列 currentMachineName) (文字列メッセージ、EventLogEntryType タイプ、Int32 イベント ID、Int16 カテゴリ、Byte[] rawData) System.Diagnostics.

于 2012-04-24T22:34:44.197 に答える
0

エラーが発生しているコードの場所を特定するには、web.config を編集して以下を含めます。

<system.web>
    <customErrors mode="Off"/>
</system.web>
于 2012-04-24T20:37:49.057 に答える