gpt4 book ai didi

c# - WCF 网络库 405 错误

转载 作者:行者123 更新时间:2023-11-30 13:01:03 26 4
gpt4 key购买 nike

为了让这个 Web 服务运行,我已经与 IIS 斗争了大约一个星期,它一直在竭尽全力试图让我辞掉工作(谢天谢地,我的工作不涉及 IIS,因为大部分)。我创建了一个 WCF 服务和一个与之对话的客户端。在我的本地系统上运行它们时,它们彼此相爱;完全没有错误。然而,当我在 IIS 上托管该服务时,情况发生了变化……

我想我已经将该服务安装为网页。我已经学习了多个教程,但没有一个可以直接回答如何安装 Web 服务。我所做的是使用 Visual Studio 中的 Publish 函数在我的桌面上发布服务(使用“to file”选项或其他名称)。然后将该文件夹移动到 IIS 服务器并将其放入 wwwroot 文件夹中。之后,我尝试使用该文件夹作为基础创建一个新网页。它包含 .svc 文件、web.config 文件和包含 .dll 的\bin 目录。

配置端点后(我知道它们配置正确,因为错误消息从“找不到端点一个”变为此 405),运行客户端程序将导致我每次都收到 405 错误。我为要转储的异常创建了一个日志,这里是:

12/20/2013 12:44:19 PM - 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.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
--- End of inner exception stack trace ---

Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.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)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at TestWebClient.TestWebService.ITestService.Repeat(String input)
at TestWebClient.TestWebService.TestServiceClient.Repeat(String input) in c:\Users\x\Documents\Visual Studio 2012\Projects\TestWebClient\TestWebClient\Service References\TestWebService\Reference.cs:line 56
at TestWebClient.Program.Repeat() in c:\Users\xl\Documents\Visual Studio 2012\Projects\TestWebClient\TestWebClient\Program.cs:line 55
at TestWebClient.Program.Main(String[] args) in c:\Users\x\Documents\Visual Studio 2012\Projects\TestWebClient\TestWebClient\Program.cs:line 16

如果有更多信息对您有帮助,请告诉我。我已经为 405 错误尝试了多种解决方案,但我没有找到任何地方。虽然我参加了一些关于 IIS 的在线类(class),但我仍然是一个初学者。无论如何,如果有人有任何想法,请告诉我。

编辑:这是 web.config,其中包含 Lex Li 要求添加到其中的代码。附带说明一下,我无法在本地系统或服务器系统上找到 svctraceviewer.exe。我现在正在四处寻找解决方案。

<?xml version="1.0"?>
<configuration>

<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
>
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "C:\temp\WCFDiagnosticsExample.svclog" />
</sharedListeners>
</system.diagnostics>


<system.web>
<compilation targetFramework="4.0" />
</system.web>

<system.serviceModel>
<services>
<service name="TestWebService.TestService">
<endpoint address="http://www.wsp41.com/" binding="basicHttpBinding"
bindingConfiguration="" contract="TestWebService.ITestService" />
</service>
</services>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="3000"
/>
</diagnostics>
</system.serviceModel>

</configuration>

最佳答案

我认为这个问题有两种可能性:

  1. 问题服务器端: WCF 未正确安装在您的服务器中:

“运行”输入:“%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe”-r

或者

打开admin cmd提示符,在c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation文件夹下执行ServiceModelreg -i。

您可以找到关于此的更多帮助 here确认服务器中是否正确安装了 WCF:

2 -- 问题客户端 根据您正在构建的应用程序类型,您可能需要启用跨域调用:crossDomainScriptAccessEnabled="true" http://msdn.microsoft.com/en-us/library/ee834511(v=vs.110).aspx

关于c# - WCF 网络库 405 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com