Visual Studio 2013 C# WCF 网络服务 _vti_bin/ListData.svc/$metadata
Visual Studio 2013 C# WCF web service _vti_bin/ListData.svc/$metadata
上下文如下:
创建 WCF 服务:框架 .NET 4.0
- 在IIS 7下部署
- 网络服务包含
- 对检索数据集的库的引用
- WCF 使用数组中的方法
- 我需要禁用 "Anonymous Authentication" 并启用 "Windows Authentication"
- 我将该服务用作 Web 服务(我不想使用 svcutil 生成的文件)
- 网络服务的端点是"mywebpoint/mywcf_web_service.svc"
当我用 Visual Studio 2010
开发解决方案时,一切正常,一切都按预期工作。
我用 Visual Studio 2013 重建了解决方案,现在它不再工作了,因为它引用了它要求凭据的网络服务:
- "mywebpoint/mywcf_web_service.svc/_vti_bin/ListData.svc" 和
- "mywebpoint/mywcf_web_service.svc/_vti_bin/ListData.svc/$metadata"
已检查 DNS 和代理身份验证...没有问题
这里是Web.Config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows" />
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
<add name="HttpSoap12" />
<add name="HttpSoap" />
</protocols>
</webServices>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm" />
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="myBasicHttpBinding" bypassProxyOnLocal="true">
<security mode="TransportCredentialOnly">
<!--<security mode="Transport">-->
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="WCF_MyWebService.Service" behaviorConfiguration="WCF_MyWebService.ServiceBehaviour">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="myBasicHttpBinding" name="BasicHttpEndpoint" contract="WCF_MyWebService.IService" >
<identity>
<dns value="" />
</identity>
</endpoint>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> ??? I didn't need this with Visula Studio 2010!!!
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WCF_MyWebService.ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
这里是我尝试在 IIS 服务器上打开 url 时在网页上遇到的错误:
Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NotSupportedException: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[NotSupportedException: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.]
System.ServiceModel.Activation.HostedAspNetEnvironment.ValidateHttpSettings(String virtualPath, Boolean isMetadataListener, Boolean usingDefaultSpnList, AuthenticationSchemes& supportedSchemes, ExtendedProtectionPolicy& extendedProtectionPolicy, String& realm) +198236
System.ServiceModel.Channels.HttpChannelListener.ApplyHostedContext(String virtualPath, Boolean isMetadataListener) +104
System.ServiceModel.Channels.HttpTransportBindingElement.BuildChannelListener(BindingContext context) +156
System.ServiceModel.Channels.Binding.BuildChannelListener(Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, BindingParameterCollection parameters) +166
System.ServiceModel.Description.DispatcherBuilder.MaybeCreateListener(Boolean actuallyCreate, Type[] supportedChannels, Binding binding, BindingParameterCollection parameters, Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, ServiceThrottle throttle, IChannelListener& result, Boolean supportContextSession) +393
System.ServiceModel.Description.DispatcherBuilder.BuildChannelListener(StuffPerListenUriInfo stuff, ServiceHostBase serviceHost, Uri listenUri, ListenUriMode listenUriMode, Boolean supportContextSession, IChannelListener& result) +583
System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) +2020
System.ServiceModel.ServiceHostBase.InitializeRuntime() +82
System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +64
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789
System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +255
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +1172
[ServiceActivationException: The service '/WCF_Excelnet_CoreSvc/WCF_Excelnet_Core.svc' cannot be activated due to an exception during compilation. The exception message is: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service..]
System.Runtime.AsyncResult.End(IAsyncResult result) +901424
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +178638
System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) +107
这太令人沮丧和失望了...
如果我很好地清理了 Web.confing 并且恢复了匿名身份验证,那一切都很好。
一定有什么可疑的东西在使用网络服务,但我运行没有选择...
基于此:
I need to disable "Anonymous Authentication" and enable "Windows Authentication"
在配置文件的 <system.web>
部分中,在 <authentication mode="Windows">
下方添加:
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
<pages />
<identity impersonate="false" />
</system.web>
现在,在 <system.webServer>
部分中,添加此 <security>
节点:
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
它可能对你不起作用,但对我来说,这解决了一周的头痛问题。
好吧,我终于解决了问题...但您不会喜欢它。
基本上相同的解决方案仅在 IIS 8.0 下运行良好。
这意味着您必须安装 Win Server 2012 等...
另外,不要忘记在属性中设置 "Windows Authenticated" = Enabled.
这是我设法让它工作的唯一方法...抱歉。
我在将项目从 VS2010 转换为 VS2013 时遇到了同样的问题(../_vti_bin/ListData.svc/$metadata 要求凭据) .我的问题来自 clientCredentialType 设置为 "Ntlm" 而不是 "Windows".
上下文如下:
创建 WCF 服务:框架 .NET 4.0
- 在IIS 7下部署
- 网络服务包含
- 对检索数据集的库的引用
- WCF 使用数组中的方法
- 我需要禁用 "Anonymous Authentication" 并启用 "Windows Authentication"
- 我将该服务用作 Web 服务(我不想使用 svcutil 生成的文件)
- 网络服务的端点是"mywebpoint/mywcf_web_service.svc"
当我用 Visual Studio 2010
开发解决方案时,一切正常,一切都按预期工作。
我用 Visual Studio 2013 重建了解决方案,现在它不再工作了,因为它引用了它要求凭据的网络服务:
- "mywebpoint/mywcf_web_service.svc/_vti_bin/ListData.svc" 和
- "mywebpoint/mywcf_web_service.svc/_vti_bin/ListData.svc/$metadata"
已检查 DNS 和代理身份验证...没有问题
这里是Web.Config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows" />
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
<add name="HttpSoap12" />
<add name="HttpSoap" />
</protocols>
</webServices>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm" />
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="myBasicHttpBinding" bypassProxyOnLocal="true">
<security mode="TransportCredentialOnly">
<!--<security mode="Transport">-->
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="WCF_MyWebService.Service" behaviorConfiguration="WCF_MyWebService.ServiceBehaviour">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="myBasicHttpBinding" name="BasicHttpEndpoint" contract="WCF_MyWebService.IService" >
<identity>
<dns value="" />
</identity>
</endpoint>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> ??? I didn't need this with Visula Studio 2010!!!
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WCF_MyWebService.ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
这里是我尝试在 IIS 服务器上打开 url 时在网页上遇到的错误:
Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NotSupportedException: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[NotSupportedException: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.]
System.ServiceModel.Activation.HostedAspNetEnvironment.ValidateHttpSettings(String virtualPath, Boolean isMetadataListener, Boolean usingDefaultSpnList, AuthenticationSchemes& supportedSchemes, ExtendedProtectionPolicy& extendedProtectionPolicy, String& realm) +198236
System.ServiceModel.Channels.HttpChannelListener.ApplyHostedContext(String virtualPath, Boolean isMetadataListener) +104
System.ServiceModel.Channels.HttpTransportBindingElement.BuildChannelListener(BindingContext context) +156
System.ServiceModel.Channels.Binding.BuildChannelListener(Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, BindingParameterCollection parameters) +166
System.ServiceModel.Description.DispatcherBuilder.MaybeCreateListener(Boolean actuallyCreate, Type[] supportedChannels, Binding binding, BindingParameterCollection parameters, Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, ServiceThrottle throttle, IChannelListener& result, Boolean supportContextSession) +393
System.ServiceModel.Description.DispatcherBuilder.BuildChannelListener(StuffPerListenUriInfo stuff, ServiceHostBase serviceHost, Uri listenUri, ListenUriMode listenUriMode, Boolean supportContextSession, IChannelListener& result) +583
System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) +2020
System.ServiceModel.ServiceHostBase.InitializeRuntime() +82
System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +64
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789
System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +255
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +1172
[ServiceActivationException: The service '/WCF_Excelnet_CoreSvc/WCF_Excelnet_Core.svc' cannot be activated due to an exception during compilation. The exception message is: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service..]
System.Runtime.AsyncResult.End(IAsyncResult result) +901424
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +178638
System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) +107
这太令人沮丧和失望了...
如果我很好地清理了 Web.confing 并且恢复了匿名身份验证,那一切都很好。
一定有什么可疑的东西在使用网络服务,但我运行没有选择...
基于此:
I need to disable "Anonymous Authentication" and enable "Windows Authentication"
在配置文件的 <system.web>
部分中,在 <authentication mode="Windows">
下方添加:
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
<pages />
<identity impersonate="false" />
</system.web>
现在,在 <system.webServer>
部分中,添加此 <security>
节点:
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
它可能对你不起作用,但对我来说,这解决了一周的头痛问题。
好吧,我终于解决了问题...但您不会喜欢它。 基本上相同的解决方案仅在 IIS 8.0 下运行良好。 这意味着您必须安装 Win Server 2012 等... 另外,不要忘记在属性中设置 "Windows Authenticated" = Enabled.
这是我设法让它工作的唯一方法...抱歉。
我在将项目从 VS2010 转换为 VS2013 时遇到了同样的问题(../_vti_bin/ListData.svc/$metadata 要求凭据) .我的问题来自 clientCredentialType 设置为 "Ntlm" 而不是 "Windows".