1

我最近刚从共享主机切换到 GoDaddy 上的 vps。我有一个在共享主机上运行良好的网络服务。我试图让它在我的 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>

编辑2:所以我注意到那个解析器错误也说“源错误:

第1行:这是预编译工具生成的标记文件,不应该删除!”

所以我试图对网络服务进行预编译。当我这样做时,我收到错误消息“使用注册为 allowDefinition='machinetoapplication' 的部分超出应用程序级别是错误的。此错误可能是由于虚拟目录未在 iis 中配置为应用程序造成的”

4

2 回答 2

2

我刚刚使用SoapClient来访问您的 Web 服务。它使我们能够快速为您的 Web 服务提供参数

怀疑您的错误出NameSearch.asmx.cs:line 29在您可能尝试写入或读取事件日志(特别是安全日志)的位置。可能EventLog.WriteEntry()

这里的问题是,在幕后,您的电话试图在VerifyAndCreateSource()没有适当授权的情况下进行。

要解决此问题,请授予安全事件日志适当的权限。运行的用户上下文可能在 NetworkService 下。

考虑实施IIS7 中的步骤:Web 应用程序写入事件日志会生成安全异常。这里的主要思想是允许网络服务或您的应用程序在其下运行的任何安全上下文,允许写入注册表项

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog

在此处输入图像描述

.NET 代码中引发的完整错误是:

System.Web.Services.Protocols.SoapException:服务器无法处理请求。---> System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志。要创建源,您需要读取所有事件日志的权限,以确保新的源名称是唯一的。无法访问的日志:安全性。在 System.Diagnostics.EventLogInternal.FindSourceRegistration(字符串源,字符串 machineName,布尔只读,布尔值 wantToCreate)在 System.Diagnostics.EventLogInternal.SourceExists(字符串源,字符串机器名,布尔值 wantToCreate)在 System.Diagnostics.EventLogInternal.VerifyAndCreateSource(字符串源名, String currentMachineName) 在 System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, 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 回答