在 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 项目