【问题标题】:Problem rolling out ADO.Net Data Service application to IIS将 ADO.Net 数据服务应用程序部署到 IIS 时出现问题
【发布时间】:2008-09-10 15:21:15
【问题描述】:

我正在向现有网页添加 ADO.Net 数据服务查找功能。从 Visual Studio 运行时一切正常,但是当我将其推出到 IIS 时,出现以下错误:

请求错误
服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志。

即使尝试显示默认页面,我也会得到这个,即:

http://server/FFLookup.svc

我在服务器上安装了 3.5 SP1。

我遗漏了什么,它指的是哪个“服务器日志”?我找不到任何其他错误消息。

事件查看器日志(系统或应用程序)中没有任何内容,IIS 日志中除了 GET 之外没有任何内容:

2008-09-10 15:20:19 10.7.131.71 GET /FFLookup.svc - 8082 - 10.7.131.86 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+en-US)+ AppleWebKit/525.13+(KHTML,+like+Gecko)+Chrome/0.2.149.29+Safari/525.13 401 2 2148074254

没有返回堆栈跟踪。我得到的唯一响应是上面提到的“请求错误”。

谢谢

帕特里克

【问题讨论】:

  • 能否运行IIS管理器(运行> inetmgr)并右键单击服务文件。单击浏览。如果您尝试使用 localhost,您可能会收到更多错误详细信息。还要注意浏览器中的 url。也许该网站配置为不同的端口。

标签: .net web-services iis wcf-data-services


【解决方案1】:

为了详细显示数据服务导致的错误,您可以在数据服务定义上方放置以下标签:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]  

这将在您的浏览器窗口中显示错误以及堆栈跟踪。

除此之外,dataservices 会向 HandleException 方法抛出所有异常,因此如果您在 dataservice 类上实现此方法,您可以在其上放置断点并查看异常:

protected override void HandleException(HandleExceptionArgs e)
{
  try
  {
    e.UseVerboseErrors = true;
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
  }
}

【讨论】:

    【解决方案2】:

    嗯,我找到了上面错误中提到的“服务器日志”。

    您需要在 web.config 文件中添加以下标签来开启跟踪:

        <system.diagnostics>
          <sources>
            <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing" >
                <listeners>
                    <add name="ServiceModelTraceListener"/>
                </listeners>
            </source>
    
            <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing"        >
                <listeners>
                    <add name="ServiceModelTraceListener"/>
                </listeners>
            </source>
            <source name="System.Runtime.Serialization" switchValue="Verbose,ActivityTracing">
                <listeners>
                    <add name="ServiceModelTraceListener"/>
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add initializeData="App_tracelog.svclog"   
                            type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                            name="ServiceModelTraceListener" traceOutputOptions="Timestamp"/>
        </sharedListeners>
    </system.diagnostics>
    

    这将在您的网站目录中创建一个名为 app_tracelog.svclog 的文件。

    然后您可以使用 SvcTraceViewer.exe 实用程序查看此文件。查看器很好地突出了错误(以及有关通信的许多其他信息)。

    注意:使用上述参数创建的日志文件增长非常快。只能在调试时开启!

    在这种特殊情况下,问题最终是我们的 Oracle 数据提供程序 OraDirect.Net 的版本不正确。我们使用的版本不支持 3.5 SP1。

    【讨论】:

    • 它是否有助于解决您的问题。如果您能分享您的发现,那就太好了。
    【解决方案3】:

    对我来说,错误是由两个具有相同名称的方法引起的(意外重载)。

    不支持重载,但类型“abc”具有重载方法“Void SubmitCart(System.String, Int32)”。

    我是通过在调试模式下运行服务发现的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-04
      • 2015-11-19
      • 1970-01-01
      • 2022-01-23
      • 2020-10-22
      • 2017-01-26
      • 2016-04-02
      • 2014-11-25
      相关资源
      最近更新 更多