设为首页 收藏本站
查看: 1127|回复: 0

2008年3月小记(设置Windows服务的依赖关系,配置MSMQ的访问权限,WCF的安全配置,删除重建网站,HttpWebRequest,一年中的周,在WCF

[复制链接]

尚未签到

发表于 2015-4-30 13:32:24 | 显示全部楼层 |阅读模式
1、如何设置Windows服务的依赖关系?
因为新开发的内容服务的WCF通信使用的是MSMQ接收用户内容的异步可离线信息,内容服务本身是一个windows服务,而这个服务必须使用MSMQ,所以就要求在机器启动时必须先启动MSMQ服务,然后才可以再启动内容服务,这就需要在内容服务中设定服务的依赖关系,此服务必须要在MSMQ服务启动后再启动。
修改ProjectInstaller.cs中的serviceInstaller1的属性ServicesDependedOn,此属性接收一个数组设置,一行代表一个依赖的服务,因为这里只依赖于MSMQ,所以填写MSMQ的服务名"MSMQ"就行了,重新编译安装内容服务后就可以了,此服务启动时,如果MSMQ没有启动,则会自动先启动MSMQ服务。

2、配置MSMQ的访问权限。
通过MessageQueue.Create创建的队列默认情况下不可以在控制台被Administrator控制或查看,这是因为没有配置权限的原因。可以在Create之后配置权限。

DSC0000.gif             if (!MessageQueue.Exists(@".\private$\ContentReceiverQueue"))
DSC0001.gif DSC0002.gif              DSC0003.gif {
DSC0004.gif                 MessageQueue messageQueue = MessageQueue.Create(@".\private$\ContentReceiverQueue", true);
                messageQueue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);
DSC0005.gif             }通过为Everyone配置完全控制的权限,则可以防止这种情况的发生。当然如果需要精确的权限控制还需要你仔细配置才是。

3、注意WCF的安全配置。
选择不同的WCF通信协议可能会有不同的默认安全身份验证,如tcp的话就是winodws身份验证,如果没有相关设置在进行跨机器访问时可能就需要用资源管理器登录一下该服务器端,并且选择保存密码,当然如果在客户端传递了验证信息除外。如果在局域网上访问也可以彻底关闭该安全验证如:


   

4、解决问题的一个可能方法:删除重建网站
网站中有一个虚拟目录service,其中提供了一个wcf服务*.svc 本地一切正常,当布署到测试服务器总是报"重新添加url地址"的错误,但是其它也是放在虚拟目录中的wcf并没有这样的错误,测了老半天发现还是网站本身的个案,所以重建了网站和虚拟目录,结果就好了。有时候这是一种最为便捷的排除方法。

5、HttpWebRequest请求一个页面的内容。

        string url = "xxxxxxxxxxxxx";

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Timeout = 5000;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode == HttpStatusCode.OK)
DSC0006.gif DSC0007.gif                 {
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                        {
                            content = reader.ReadToEnd();
DSC0008.gif                         }
                    }
                }
            }
6、计算一年中的周。

        // 求某年有多少周
        public static int GetYearWeekCount(int year)
        {
            int count = 53;
            if (DateTime.IsLeapYear(year) && (new DateTime(year, 1, 1).DayOfWeek == DayOfWeek.Saturday))
            {
                count = 54;
            }
            return count;
        }

        // 求当前日期是一年的中第几周
        public static int WeekOfYear(DateTime day)
        {
            return CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(day, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
        }
7、如何在在WCF中使用HttpContext
默认情况下,通过WCF调用无法像ASMX或者ASPX一样可以直接使用HttpContext对象,当然也不可以使用其中的上下文缓存了。为了和现在系统蒹容可以使用WCF ASP.NET 兼容模式选项。在这种模式下,WCF 服务以与 ASMX 服务类似的方式参与 ASP.NET HTTP 管线。ASP.NET 功能(例如,文件授权、URL 授权和 HTTP 会话状态)适用于在此模式下运行的 WCF 服务。步聚如下:
A、程序员必须将 AspNetCompatibilityRequirementsAttribute 属性添加到服务类型中,并指定是允许还是需要 ASP.NET 兼容模式。

    [ServiceBehavior]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class SampleContent : ISampleContentB、必须将应用程序配置为使用 ASP.NET 兼容模式。

   
        
   
注意为了使WCF保持一致风格,可以使用InstanceContext对像。

        OperationContext operationContext = OperationContext.Current;
            InstanceContext instanceContext = operationContext.InstanceContext;另外,WCF 应用程序也可以配置为使用 .asmx(而非 .svc)作为服务文件的扩展名。


     
      
      
      
      
      
      
     
此选项可以使您在将服务修改为使用 WCF 时,免于修改配置为使用 .asmx 服务文件 URL 的客户端。
Providing custom context to your WCF service instance
从开发的角度比较 ASP.NET Web 服务与 WCF
AspNetCompatibilityRequirementsAttribute

  8、如何编写并发测试代码?
  9、串联字符串
String.Join(",", new string[]{"a","b","c"})

  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-62318-1-1.html 上篇帖子: 用WAIK创建自己的Windows Vista/Sever 2008万能通用安装盘 下篇帖子: windows server 2008 延长试用时间方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表