- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉还有一个跨域问题。
我现在一整天都在与它抗争,快要沸腾了。
我有一个 Silverlight 应用程序项目 (SLApp1)、一个用于托管 Silverlight 的 Web 项目 (SLApp1.Web) 和一个 WCF 项目 (SLWcfService)。
现在我正在一起构建所有内容,所有项目都在一个解决方案中。Web 项目由 Visual Studio 托管,WCF 服务由 WcfSvcHost 托管。
问题是因为 web 和 wcf 是分开托管的,所以存在跨域问题,所以每次我的 Silverlight 应用程序尝试调用 WCF 时都会抛出跨域异常。
我试过:
问题是我仍在开发解决方案,因此发布服务然后在 IIS 中托管根本不是一个可行的解决方案。
为什么这必须如此困难?
请帮忙!
引用资料:
我的 App.config:
<system.serviceModel>
<services>
<service name="Test.Service1" behaviorConfiguration="Test.Service1Behavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8055" />
</baseAddresses>
</host>
<endpoint address="Service1" binding="basicHttpBinding" contract="Test.IService1"/>
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="webHttpBehavior" contract="Test.WCFService.IClientAccessPolicy" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Test.WCFService.Service1Behavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
最佳答案
虽然我不确定这是否会解决您的问题,但我会向您展示我是如何设法修复类似的解决方案布局的,也许这些步骤会提供一些指导。
我使用 silverlight 项目 (domainexception)、web 项目 (domainexception.Web) 和 wcf 服务 (WcfServiceLibrary1) 设置了一个解决方案。我将 Service1 端点设为 basicHttpBinding,就像它在您的 App.config 中一样。
然后我添加了对 silverlight 项目的服务引用,并使用以下地址构建它:
"http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/Service1/"
尝试像这样运行它时我也遇到了跨域策略问题。
然后我向其中添加了 webHttpBinding 和方法,但仍然发现它不起作用。
所以,最后我把基地址从上面的改成了
它奏效了。
最终成功了。这就是最后的样子。
App.config
<system.serviceModel>
<services>
<service name="WcfServiceLibrary1.Service1" behaviorConfiguration="WcfServiceLibrary1.Service1Behavior">
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8731/" />
</baseAddresses>
</host>
<endpoint address ="Service" binding="basicHttpBinding" contract="WcfServiceLibrary1.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="policyBehavior" contract="WcfServiceLibrary1.IService1"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="policyBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WcfServiceLibrary1.Service1Behavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
ServiceReferences.ClientConfig
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8731/Service" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
name="BasicHttpBinding_IService1" />
</client>
</system.serviceModel>
我的政策网络呼吁:
界面
[OperationContract, WebGet(UriTemplate="clientaccesspolicy.xml")]
Stream ReturnPolicy();
代码
public System.IO.Stream ReturnPolicy()
{
string file = @"<?xml version=""1.0"" encoding=""utf-8""?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=""*"">
<domain uri=""*""/>
</allow-from>
<grant-to>
<resource path=""/"" include-subpaths=""true""/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>";
return new MemoryStream(Encoding.UTF8.GetBytes(file));
}
关于c# - WcfSvcHost 的跨域异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326331/
抱歉还有一个跨域问题。 我现在一整天都在与它抗争,快要沸腾了。 我有一个 Silverlight 应用程序项目 (SLApp1)、一个用于托管 Silverlight 的 Web 项目 (SLApp1
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Re
是否可以强制 WcfSvcHost(当我执行 F5 或在解决方案中调试另一个项目时自动执行)使用自定义 ustom 服务? 我的自定义服务主机在我的 asp.net 主机容器中运行良好,方法是使用一个
我正在尝试编写我的第一个 WCF 项目。我创建了一个 WCF 库类型的项目。 在我正在工作的视频中,当按下 F5(启动调试器)时,WCF 测试客户端启动。 我必须对我的项目设置做什么才能启动 WcfT
当我尝试在 Visual Studio 2012 中运行 wcf 时,出现以下错误 Usage: WcfSvcHost.exe /service: /config: [/client:][/clien
在 Vista x64 上的 Visual Studio 2008 中创建 WCF 服务库在引用 x86 DLL 时很麻烦。调用 32 位 DLL 的服务需要具有 x86 平台目标才能在 64 位操作
使用 Visual Studio 2010,我编写了一个简单的 WCF 服务和一些我想对其运行的集成测试。我在代码中构建运行时测试的代理,而不是使用配置。 我的测试在调试中通过,但在运行时失败! 如果
我是一名优秀的程序员,十分优秀!