我正在将 WCF 服务迁移到运行 IIS10 的新 2019 服务器。
这些服务来自的服务器是运行在Server 2012R2上的IIS8.5。
很明显,正如许多讨论所表明的那样,IIS 备份/恢复可能/将会失败。
我已经从 VS2019 设置了远程部署,与旧服务器相同。
我可以毫无问题地部署 Web 和 REST 服务 - 但 WCF 服务失败:
Fiddler 报告 404 Not Found。
在调试下通过测试程序调用服务会出现以下情况:
25-02 11:09:43 [24016] 致命 bSm.Kll.Program - System.ServiceModel.ProtocolException:远程服务器返回意外响应:(405) 不允许方法。 ---> System.Net.WebException:远程服务器返回错误:(405) 不允许方法。
在 System.Net.HttpWebRequest.GetResponse()
在 System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan 超时)
--- 内部异常堆栈跟踪结束 ---
服务器堆栈跟踪:
在 1 工厂、WebException responseException、ChannelBinding channelBinding)
在System.ServiceModel.Channels.HttpChannelFactory1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan超时)
在System.ServiceModel.Channels.RequestChannel.Request(消息消息,TimeSpan超时)
在System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息消息,TimeSpan超时)
在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作、布尔单向、ProxyOperationRuntime 操作、Object[] ins、Object[] outs、TimeSpan 超时)
在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime 操作)
在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)
我有理由确定我缺少该服务的凭据,问题是该服务器强制执行的附加要求在哪里/是什么。
顺便说一句:
我已经遇到过这样的问题:Web 部署工具对“用户委托”有额外的要求,这本身就是一个很大的障碍。在这一要求公布之前,必须从 MS 网站收集该工具的 3.6 版本。
I am migrating WCF services to a new 2019 server running IIS10.
The server that these services come from is a IIS8.5 running on Server 2012R2.
It is obvious that a IIS backup/restore might/will fail as a number of discussions will suggest.
I have set up my remote deployment from VS2019 the same as for the old server.
I can deploy webs and REST services without any problems - BUT WCF services fail:
Fiddler reports 404 Not Found.
Calling the service via test programs under debug brings up the following:
25-02 11:09:43 [24016] FATAL bSm.Kll.Program - System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (405) Method Not Allowed. ---> System.Net.WebException: The remote server returned an error: (405) Method Not Allowed.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
--- End of inner exception stack trace ---
Server stack trace:
at <System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory1 factory, WebException responseException, ChannelBinding channelBinding)<br> at System.ServiceModel.Channels.HttpChannelFactory
1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
I am reasonable sure that I am missing credentials for the service, the problem is WHERE / WHAT is the additional requirement enforced by this server.
As an aside:
I already ran across the problem that the Web Deployment tool has a extra requirement for a "User delegate" which was quite a hurdle on its own. The 3.6 version of the tool had to be collected from the MS website before this requirement was revealed.
发布评论