Silverlight 4.0 如何更改Silverlight RIA服务的名称空间--删除tempuri.org

Silverlight 4.0 如何更改Silverlight RIA服务的名称空间--删除tempuri.org,silverlight-4.0,.net-4.0,wcf-ria-services,Silverlight 4.0,.net 4.0,Wcf Ria Services,我正在使用RIA服务开发Silverlight 4应用程序,我有RIA服务SP1测试版工具 在Fiddler中检查时,我的域服务似乎位于名称空间中http://tempuri.org. 我想控制名称空间。有可能换掉吗http://tempuri.org 想要了解对我的组织更有意义的内容?我一直在搜索启用SOAP的DomainServiceHost中默认命名空间的最后一个实例。我仍然缺少一些,但这里是我找到的。哦,这段代码还将端点限制为https并阻止元数据生成 using System.Serv

我正在使用RIA服务开发Silverlight 4应用程序,我有RIA服务SP1测试版工具

在Fiddler中检查时,我的域服务似乎位于名称空间中http://tempuri.org.


我想控制名称空间。有可能换掉吗http://tempuri.org 想要了解对我的组织更有意义的内容?

我一直在搜索启用SOAP的DomainServiceHost中默认命名空间的最后一个实例。我仍然缺少一些,但这里是我找到的。哦,这段代码还将端点限制为https并阻止元数据生成

using System.ServiceModel.DomainServices.Hosting;
using System;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Collections.Generic;
namespace mySite.Web.Models
{
    public class DomainServiceHostFactoryEx : DomainServiceHostFactory
    {
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            return new DomainServiceHostEx(serviceType, baseAddresses.Where(x => x.AbsoluteUri.StartsWith("https")).ToArray());
        }
    }
    public class DomainServiceHostEx : DomainServiceHost
    {
        public DomainServiceHostEx(Type domainServiceType, params Uri[] baseAddresses) : base(domainServiceType, baseAddresses)
        {
            foreach (KeyValuePair<string, ContractDescription> currentContract in this.ImplementedContracts)
            {
                currentContract.Value.Namespace = "http://myWebSite.com/";
                foreach (OperationDescription currentDescription in currentContract.Value.Operations)
                {
                    currentDescription.DeclaringContract.Namespace = "http://myWebSite.com/";
                    foreach (OperationDescription innerCurrentDescription in currentDescription.DeclaringContract.Operations)
                    {
                        foreach (FaultDescription innerCurrentFaultDescription in innerCurrentDescription.Faults)
                        {
                            innerCurrentFaultDescription.Action.Replace("http://tempuri.org", "http://myWebSite.com/");
                        }
                        foreach (MessageDescription innerCurrentFaultDescription in innerCurrentDescription.Messages)
                        {
                            innerCurrentFaultDescription.Action.Replace("http://tempuri.org", "http://myWebSite.com/");
                        }
                    }
                    foreach (FaultDescription currentFaultDescription in currentDescription.Faults)
                    {
                        currentFaultDescription.Action.Replace("http://tempuri.org", "http://myWebSite.com/");
                    }
                    foreach (MessageDescription currentMessageDescription in currentDescription.Messages)
                    {
                        currentMessageDescription.Action.Replace("http://tempuri.org", "http://myWebSite.com/");
                    }
                }
            }
        }
        protected override void AddDefaultBehaviors()
        {
            base.AddDefaultBehaviors();
            this.Description.Behaviors.Find<ServiceMetadataBehavior>().HttpsGetEnabled = false;
            this.Description.Namespace = "http://myWebSite.com/";
        }
    }
}
您必须在根目录或带有服务端点的Services文件夹中创建一个.svc文件,即/Services/mySite-Web-Models-myDomainService.svc,其中包含以下代码:

<%@ ServiceHost Service="mySite.Web.Models.myDomainService"
                Factory="mySite.Web.Models.DomainServiceHostFactoryEx" %>