我刚刚从共享主机切换到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>
编辑2: 所以我注意到解析器错误,它也说“源错误:
第1行:这是预编译工具生成的标记文件,不应删除!“
所以我试着在webservice上做一个预编译。当我这样做时,我得到错误说“使用注册为allowDefinition ='machinetoapplication'的部分超出应用程序级别是错误的。这个错误可能是由于虚拟目录没有被配置为iis中的应用程序”
答案 0 :(得分:2)
我刚使用SoapClient来点击your web service。它允许我们快速supply arguments to your web service。
怀疑您的错误在NameSearch.asmx.cs:line 29
,您可能正在尝试编写或读取事件日志(特别是安全日志)。可能EventLog.WriteEntry()
。
这里的问题是,在幕后,如果没有适当的授权,您的通话会尝试VerifyAndCreateSource()
。
要解决此问题,请为安全事件日志授予适当的权限。可能运行的用户上下文在NetworkService下。
考虑实施IIS7: Web Application writing to Event Log generates Security Exception中的步骤。这里的主要想法是允许网络服务,或运行您的应用程序的任何安全上下文,写入注册表项的权限
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
.NET代码中抛出的完整错误是:
System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---&GT; System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志。要创建源,您需要具有读取所有事件日志的权限,以确保新源名称是唯一的。无法访问的日志:安全性。 at System.Diagnostics.EventLogInternal.FindSourceRegistration(String source,String machineName,Boolean readOnly,Boolean wantToCreate)at System.Diagnostics.EventLogInternal.SourceExists(String source,String machineName,Boolean wantToCreate)at System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName) ,System.Diagnostics.EventLogInternal.WriteEntry(String message,EventLogEntryType type,Int32 eventID,Int16 category,Byte [] rawData),位于System.Diagnostics.EventLog.WriteEntry(String message),位于WebServices.NameSearch.GetSearchResult处(字符串currentMachineName) prefixText,Int32 count)在C:\ Users \ xufurisa \ Dropbox \ Programs \ PoliticProfiles \ WebServices \ NameSearch.asmx.cs:第29行
答案 1 :(得分:0)
要确定代码中您的错误发生在哪里,请编辑您的web.config以包含:
<system.web>
<customErrors mode="Off"/>
</system.web>