gpt4 book ai didi

c# - RESTful WCF 服务返回 "The resource cannot be found."错误

转载 作者:太空狗 更新时间:2023-10-29 22:24:14 25 4
gpt4 key购买 nike

我有一个无法运行的 RESTful 服务。当我在地址栏中键入 URI 时,收到此错误:

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /VirtualRUS/Service1.svc/

我不知道为什么它不起作用。我将我的代码和 web.config 与一个工作示例进行了比较,没有发现任何差异。

编辑:此外,如果我使用服务引用,我就可以很好地使用该服务。如果我导航到 URI,或者更重要的是,当我尝试创建 WebRequest 时,它就不起作用。

有谁知道为什么这行不通吗?

Service1.cs:

[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate = "/")]
string Test();
}

Service1.svc.cs:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service1 : IService1
{
public string Test()
{
return "It works!!";
}
}

Web.Config:

<?xml version="1.0" ?>
<configuration>
<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
<appSettings></appSettings>
<connectionStrings>
<add name="ResearchLibrary" connectionString="Server=XXXXXX" ; Initial Catalog=ResearchLibrary; user id=XXX; password=XXX " />
</connectionStrings>
<system.web>
<compilation debug="true ">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089 "/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</assemblies>
</compilation>

<authentication mode="Windows "/>

<pages>
<controls>
<add tagPrefix="asp " namespace="System.Web.UI " assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</controls>
</pages>
<httpHandlers>
<remove verb="* " path="*.asmx "/>
<add verb="* " path="*.asmx " validate="false " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add verb="* " path="*_AppService.axd " validate="false " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add verb="GET,HEAD " path="ScriptResource.axd " type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 " validate="false "/>
</httpHandlers>
<httpModules>
<add name="ScriptModule " type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</httpModules>
<httpRuntime maxRequestLength="65536 "/>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp " extension=".cs " warningLevel="4 " type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ">
<providerOption name="CompilerVersion " value="v3.5 "/>
<providerOption name="WarnAsError " value="false "/>
</compiler>
</compilers>
</system.codedom>
<system.web.extensions>
<scripting>
<webServices>
</webServices>
</scripting>
</system.web.extensions>

<system.webServer>
<validation validateIntegratedModeConfiguration="false "/>
<modules>
<add name="ScriptModule " preCondition="integratedMode " type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated "/>
<add name="ScriptHandlerFactory " verb="* " path="*.asmx " preCondition="integratedMode " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add name="ScriptHandlerFactoryAppServices " verb="* " path="*_AppService.axd " preCondition="integratedMode " type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
<add name="ScriptResource " preCondition="integratedMode " verb="GET,HEAD " path="ScriptResource.axd " type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "/>
</handlers>
</system.webServer>
<system.serviceModel>
<services>
<service name="ResearchUploadService.Service1 " behaviorConfiguration="ResearchUploadService.Service1Behavior ">
<!-- Service Endpoints -->

<endpoint address="customBinding " binding="customBinding " bindingConfiguration="basicConfig " contract="ResearchUploadService.IService1 "/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ResearchUploadService.Service1Behavior ">

<serviceMetadata httpGetEnabled="true "/>
<
<serviceDebug includeExceptionDetailInFaults="true "/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="basicConfig ">
<binaryMessageEncoding/>
<httpTransport transferMode="Streamed " maxReceivedMessageSize="67108864 "/>
</binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>

最佳答案

您的端点不是 REST 端点,而是“普通”SOAP 端点(二进制编码/http 传输)。 REST 端点是使用特定绑定(bind) (webHttpBinding) 和行为 (webHttp) 定义的。此外,添加服务引用不适用于 REST 端点,这也表明如果它适用于您,则您没有使用 REST 端点。

要将您的端点更改为 RESTful,您可以更改 web.config,如下所示(除了您已有的 SOAP 端点之外,它实际上添加了一个 REST 端点)。

<system.serviceModel>
<services>
<service name="ResearchUploadService.Service1" behaviorConfiguration="ResearchUploadService.Service1Behavior">
<!-- Service Endpoints -->

<endpoint address="customBinding" binding="customBinding" bindingConfiguration="basicConfig" contract="ResearchUploadService.IService1"/>
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="REST" contract="ResearchUploadService.IService1"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ResearchUploadService.Service1Behavior">

<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="REST">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="basicConfig">
<binaryMessageEncoding/>
<httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>
</binding>
</customBinding>

</bindings>
</system.serviceModel>

关于c# - RESTful WCF 服务返回 "The resource cannot be found."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6103358/

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