以前MVC 4应用程序托管在windows 2003服务器asp.net 4.0.30319中WCF服务也托管在那里
匿名访问与IUSR_帐户一起检查以及"集成Windows身份验证"复选框。
现在将网站和服务同时迁移到Windows 2012 Server(IIS 8)点击Web服务效果良好:
http://exampleservicetest.test.com/Service.svc?wsdl
问题:调出调用该服务的网站会返回下面的405错误。篡改谷歌设置并不能解决这个问题。。。。
错误。
An error occurred while processing your request.
ProtocolException
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 ---
看起来这是一个常见的配置问题。这是一个HTTP传输状态错误,通常意味着您试图使用web服务器不支持的HTTP方法发出HTTP请求。也就是说,你需要看看你的网站是如何请求这项服务的,它使用的是什么http方法。。。GET
、POST
、PUT
、DELETE
、HEAD
等。并确定您的web服务器是否支持此方法。
常见原因有:
- 服务公开的web方法不支持此Http方法。这不是你的情况
- 您已安装WebDav Publishing,并且已为您的网站启用它
- 如果您需要
WebDav
,请检查您的设置以启用本博客文章中所述的所需权限(注意,它与IIS7.5有关,但您可以在IIS网站上找到一些关于如何在IIS8中执行相同操作的文档) - 如果禁用
WebDav
,则可能还需要禁用web.config
文件中的相关模块和处理程序
- 如果您需要
-
如果您使用的是无扩展名的
REST
URL,并且使用的是PUT
和DELETE
方法,那么您可能需要通过修改Extensionless-Url
处理程序元素的verb
属性来配置applicationhost.config
文件以支持这些http方法。<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
是web.config的路径中没有完整的service.svc。。。。