如何解决WCF服务可在Server 2012 R2上运行,但在2016年会引发错误
我有一个已在Server 2012R2上运行的WCF服务。我尝试将服务移至Server 2016并开始出现以下错误:
类型'MyService',作为ServiceHost指令中的Service属性值提供,或在配置元素system中提供。找不到服务模型/ serviceHostingEnvironment / serviceActivations。
我实际上将整个目录从一台服务器移到了另一台服务器-因此所有代码和设置都相同。
我的服务在web.config
中的配置如下:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
...
<services>
<service name="MyService" behaviorConfiguration="BehaviorConfig">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="json" contract="IMyService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
我的myservice.svc
看起来像这样:
<%@ ServiceHost Language="C#" Debug="true" Service="MyService" CodeBehind="~/App_Code/MyService.cs" %>
是的,包含该服务的.dll在我的Bin
目录中。
我的服务定义如下:
[ServiceContract(Namespace="")]
public interface IMyService
{
[OperationContract]
[WebInvoke(Method ="POST",RequestFormat=WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped)]
string Validate(string userId,string userText);
[OperationContract]
[WebInvoke(Method = "GET",RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]
void UserName(string userId);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService: BaseService,IMyService
{
//Implementation here
}
因此,我读了许多帖子,指出.svc
文件应该包含服务类型-包括名称空间。但是,就我而言,没有名称空间。
该项目面向.NET Framework 4.6.1。
我想念什么?
解决方法
我在Windows Server 2012 R2上发布了WCF服务,文件目录如下:
bin目录中的文件:
然后我将整个目录复制到Windows Server 2016,它能够成功运行。
在此过程中我没有遇到任何问题,您可以参考复制到Windows Server 2016的文件。您需要检查目录中是否缺少某些文件。如果仍然无法使用,建议您在2016年重建项目,然后再进行部署。
,我终于做到了。经过数小时的混乱之后,我终于意识到,在原始服务器上,我的Services子文件夹也已成为自己的Web应用程序。 IOW,我在Web应用程序中有一个Web应用程序。
在新服务器上,我没有将服务子文件夹转换为Web应用程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。