在 IIS 上托管 WCF 后出现“请求错误”

Posted

技术标签:

【中文标题】在 IIS 上托管 WCF 后出现“请求错误”【英文标题】:Getting "Request Error" after hosting WCF on IIS 【发布时间】:2014-03-18 20:45:10 【问题描述】:

在 IIS 上托管 WCF Restful 服务之前。我在我的 android 应用程序中得到了服务器的响应,但现在我在 IIS 上托管了我的服务,但收到了 REQUEST ERROR 的错误消息。我不知道出了什么问题。有人可以解决我的问题吗?提前致谢

在 IIS 上托管之前

上图是在 IIS 上托管服务之前。黄色突出显示的文本是param,JSON 是对应于param 的响应。

在 IIS 上托管后

我不知道为什么会出现此错误。出了什么问题以及如何解决。现在我正在尝试检索与 param 对应的数据,但收到一条错误消息。

"SERVER LOG after includeexceptiondetailInfaults 属性值为真"

我确定是数据库导致了错误,你可以查看下面server log的图片

【问题讨论】:

您是否按照提示的错误消息查看了服务器日志? 在哪里可以找到此日志? 当您在 IIS 上托管服务时,您确定您的托管正确吗?可以浏览 IIS 上的服务吗? 究竟能不能浏览:localhost/MyService/Quiz/QuizServ.svc?看看windows event viwer (windows.microsoft.com/en-us/windows/…) @FaizanMubasher 是的,它工作正常。 【参考方案1】:

数据库导致错误。我找到了解决方案。我们需要做什么?我们需要为IIS APPPOOL\ASP.NET v4.0 添加一个登录到SQL Server 并授予数据库权限。

在 SQL Server Management 中,在服务器下,展开 Security,然后右键单击 Logins 并选择“New Login...”。

在“新建登录”对话框中,输入应用程序池作为登录名,然后单击“确定”

现在右键单击登录名,选择属性,然后单击用户映射选项。单击相应的 DATABASE 并检查属性角色。我们完成了:)。

希望你好运。谢谢

【讨论】:

【参考方案2】:

可能的解决方案是,

(i)确保您的所有财产都是公开的。

(ii)要查看有关问题的更多详细信息,您需要在 servicedebug 标记中包含exceptiondetailInfaults 属性为true。

<servicebehaviors>
        <behavior name="myServiceBehavior">
          <servicedebug includeexceptiondetailinfaults="true" />
        </behavior>
</servicebehaviors>

(iii)删除 Enum 类型(或使用他们建议的解决方法并使用 enum 属性的包装器),这应该会消失。

(iv)将连接字符串从类库 app.config 复制到 web 项目 web.config 如果你使用的是类库和 web 项目,

【讨论】:

为什么要删除枚举类型? 建议避免在 web 服务中使用枚举,因为它们会产生兼容问题。 你能分享一个链接吗? ***.com/questions/326339/… 好吧,他没有粘贴代码,但他提出的问题仍然与枚举无关,而且REST服务以JSON/XML返回响应。所以,不用担心枚举。【参考方案3】:

在 iis 上托管后 iis中发生请求错误 服务器遇到请求错误,请参阅服务器日志以获取更多详细信息 解决方案 在您的 sql server 更改窗口中,通过用户名和密码将身份验证为 sql 身份验证 并更改连接字符串 更改这些步骤并刷新 iis 和 你的问题解决了

【讨论】:

以上是关于在 IIS 上托管 WCF 后出现“请求错误”的主要内容,如果未能解决你的问题,请参考以下文章

访问本地 IIS 上托管的 WCF 服务时出错:“相对 URI 不支持此操作。”

无法将 Azure VM 上托管的 WCF 服务引用添加到 VS2015 项目

WCF REST - 在 IIS 6 上托管的问题

IIS 上托管的 WCF 服务和 IIS 上的客户端网站

从托管在 Linux 服务器上的 Java 客户端使用 WCF

从 Windows 应用程序访问托管在 IIS 上的 WCF 服务时出现问题