gpt4 book ai didi

wcf - 在 IIS 上运行 .net 4 WCF 服务时出现 404(无 svc 文件)

转载 作者:行者123 更新时间:2023-12-01 17:45:54 25 4
gpt4 key购买 nike

我正在 .net 4 上的 WCF 中测试 REST 服务 - 即没有 svc 文件。它在针对 VS 开发服务器运行时效果很好,但是当我将其切换为针对 IIS 运行时,在尝试浏览帮助页面或点击任何服务方法时,我收到 404 错误。

我已经退回到一个简单的服务,只是让它在 IIS 上运行,但我不确定它出了什么问题。

global.asax 简单地有

    protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(DataPortalService)));
}

服务本身非常简单:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class DataPortalService : IDataPortalService
{
[WebGet(UriTemplate = "Test/TestMethod")]
public string TestMethod()
{
return "Hi!";
}
}

[ServiceContract]
public interface IDataPortalService
{
[OperationContract]
string TestMethod();
}

和配置文件

<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>

</configuration>

点击/help 页面或该方法会给我一个 404.0.0.1 错误。

我想我只是缺少 IIS 中的一些设置来启动它,尽管它在开发服务器上运行良好但在 IIS 上运行得不太好,这有点愚蠢。

最佳答案

在其他论坛进行挖掘后解决了这个问题。

我最初将以下内容添加到我的网络配置中:

<system.webServer>
<handlers>
<remove name="svc-Integrated-4.0" />
<add name="svc-Integrated-4.0" path="*" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>

显然,默认情况下 IIS 不知道如何处理无扩展名请求,并将它们传递给静态文件处理程序。

鉴于 MVC 使用相同的例程架构,我认为基本的 MVC 站点模板必须具有与上述类似的一些配置,因为我的 MVC 站点在迁移到 IIS 时工作正常。

事实证明,他们的配置略有不同,并且具有以下条目:

  <system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

两种配置似乎都可以正常工作,但在这种情况下我决定使用第二个选项。

关于wcf - 在 IIS 上运行 .net 4 WCF 服务时出现 404(无 svc 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793127/

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