公海赌船网址会并发无权限错 –&gt,  3.添加自定义的WCF【服务文件】User.svc

第一个WCF程序

*
*

  1.
新创建空白化解方案,并在缓解方案中新建项目,项目项目为:WCF服务应用程序。建立完结后如下图所示:

① 、IIS6,安装任何归纳CGI,ASP,ASP.NET,ISAPI Flters, ISAPI Extension等

公海赌船网址 1

二 、在IIS中添加二个SITE

  2.去除系统生成的八个文本IService1.cs与Service1.svc。

  1. 按如下图

  3.添加自定义的WCF【服务文件】User.svc,此时vs二〇一〇会自动生成WCF接口文件IUser.cs,我们在IUser中定义WCF方法ShowName,在User.svc.cs对该接口的主意进行落到实处。 

公海赌船网址 2

     代码如下:

  1. 安排权力
using System.ServiceModel;

namespace WCFService
{
    [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string ShowName(string name);
    }
}


namespace WCFService
{
    public class User : IUser
    {
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服务,显示姓名:{0}", name);
            return wcfName;
        }
    }
}

公海赌船网址 3

世家能够看看,在WCF中的接口与平时接口的区分只在于三个上下文,其余的和大家健康学习的接口一样。定义这几个上下文要添加System.ServiceModel的引用。

公海赌船网址 4

[ServiceContract],来验证接口是多个WCF的接口,借使不加的话,将无法被表面调用。

公海赌船网址 5

[OperationContract],来表明该方法是四个WCF接口的法门,不加的话同上。 

以上设置会并发以下麻疹划线的布署

那会儿我们的第③个WCF服务程序就建立好了,将User.svc“设为初步页”,然后F5运作一下摸索,如下图所示,VS二零零六活动调用了WCF的客户端测试工具以便大家测试程序:

<system.web>

公海赌船网址 6

    < compilation debug =”false ” targetFramework =”4.0 “>

  大家双击上图中的 ShowName() 方法,出现如下图:

      < assemblies>

公海赌船网址 7

        < add assembly =”System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35″ />

  在呼吁窗口中的值中输入参数“你的姓名”,然后点击“调用”,在响应窗口中会出现再次来到值“WCF服务,呈现姓名:你的人名”,表明测试成功,点击下面包车型的士XML也足以看看XML的数据传输。大家前些天确立好了服务的应用程序和业务逻辑,即相当简单的打字与印刷姓名的不二法门,测试也成功了。那么大家怎么用吗?

      </ assemblies>

当前以来我们是在wcf测试工具上得以健康调用wcf了,而大家今日想要把它揭发到iis上,所以下边就是对iis的布局了。

    </ compilation>

 

    <!– 没有这一段,会并发无权限错 –>

 

<authorization>

 

      < allow users =”* ” />

 

    </ authorization>

 

    < authentication mode =”Forms ”
/>

第一步:自作者批评Windows7中IIS是不是安装了须要的机件

    < profile>

艺术:控制面板->程序和功用->打开或关闭Windows功效

      < properties>

以下图片中标明的效益Windows7私下认可不会安装的

        <!– todo:商量怎样行使M$自带DLL来操作USELacrosse类 –>

 

        < add allowAnonymous =”false ” defaultValue =”” name=”
UserName” readOnly=” false” serializeAs=” String” type=” System.String”
/>

公海赌船网址 8

      </ properties>

公海赌船网址 9

    </ profile>

公海赌船网址 10

  </system.web>

第二步:检查IIS的配置

公海赌船网址 11

系统必备安装到位后打开IIS服务管理器,点默许网站,双击“处理程序映射”如下图

公海赌船网址 12

公海赌船网址 13

假定没有上述MAPPING,则注脚WCF没有安装到IIS中,供给周转

 检查一下下图中革命标注部分是不是曾经存在,不然WCF服务是心有余而力不足调用的。不幸要是没有找到那多少个”兄弟”的话方法如下

  1. register ASP.NET runtime from VS.NET 2005/2008 command line run:
    aspnet_regiis –i –enable
  2. map *.svc file by

安装注册WCF组件

2.1 Win2003 or XP run:
“%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication
Foundation\ServiceModelReg.exe” -r

公海赌船网址 14

2.2 Win2008 or Vista run:
“%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication
Foundation\ServiceModelReg.exe” -L

 

(倘诺是六11人,要选用60人的,反正本人今后是如此选拔的)

一 、运维cmd命令行工具。(初步 ==> 运行 ==> cmd回车)
(注意!!若是利用Windows
Vista或7的话,务必使用administrator管理员身份运行,不然大概引致上边包车型地铁操作非常的小概持续!)

  1. then restart your IIS  iisreset /noforce

2、进入WCF文件夹:
cd C:\WINDOWS\Microsoft.NET\Framework\v3
.0\Windows Communication Foundation

三 、运维ServiceModelReg.exe工具,会取得如下支持消息:

C:\Documents and Settings\Administrator>cd
c:\WINDOWS\Microsoft.NET\Framework\v3
.0\Windows Communication Foundation

C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication
Foundation>Service
ModelReg
Microsoft(昂Cora) Windows Communication Foundation 安装实用程序
[Microsoft (R) Windows (R) Communication Foundation, 版本
3.0.4506.2152]
版权全数 (c) Microsoft Corporation。保留全体义务。

管住一台总结机上的 Windows Communication Foundation
的安装和卸载的管理实用程序

用法:
   ServiceModelReg.exe [-i[r | ru] | -u | -ua | -r | -s:<path>
| -sn:<path>
   | -k:<path> | -kn:<path> | -lv | -lk | -vi] [-y]
[-x] [-q | -v] [-nologo]
   [-?]
-i         – 安装此版本的 Windows Communication Foundation,并更新
             IIS 元数据库根处的本子映射和根以下的享有脚本映射。
             现有的较低版本的本子映射会升级至此版本。

-ir        – 安装此版本的 Windows Communication Foundation,
             仅注册。不要在 IIS 中安装 Windows Communication
Foundation
             脚本映射。
-iru       – 安装此版本的 Windows Communication Foundation。要是
             存在利用 Windows Communication Foundation 的此外现有
             应用程序,不要在 IIS 中创新它们的本子映射。
-u         – 卸载此版本的 Windows Communication Foundation。
             将此版本现有脚本映射会重新照射到总括机上剩余的
             已设置的万丈版本的 Windows Communication Foundation。

-ua        – 卸载计算机上拥有版本的 Windows Communication Foundation。

-r         – 重新安装此版本的 Windows Communication Foundation,
             并更新 IIS 元数据库根处的本子映射和根以下的持有
             脚本映射。无论原始版本是什么,都将现有的本子映射
             升级到此版本。
-x         – 包蕴作为该安装操作一部分的 Windows Communication
             Foundation 自定义操作脚本。
-s:<path> – 在钦赐的门径以非递归方式安装此版本
             的 Windows Communication Foundation。
             例如,ServiceModelReg.exe -s:W3SVC/1/ROOT/SampleApp1
-sn:<path> – 在内定的路子以非递归方式安装
             此版本的 Windows Communication Foundation。
-k:<path> – 从钦赐的门道中以递归格局删除全体版本的 Windows
             Communication Foundation 的兼具脚本映射。
             例如,ServiceModelReg.exe -k:W3SVC/1/ROOT/SampleApp1
-kn:<path> – 从钦命的门路中以非递归格局删除 Windows
Communication
             Foundation 的具备版本的具备脚本映射。
-lv        – 列出在该总结机上设置的有着版本的 Windows Communication
             Foundation,以及气象和安装路径。
-lk        – 列出对 Windows Communication Foundation 实行脚本映射
             的岗位的具备 IIS 元数据库密钥,以及该版本。将不会
             展现从父密钥继承 Windows Communication Foundation
             脚本映射的密钥。
-vi        – 确认目的组件的安装并扭转报告。组件能够处于下列情况:
              未知、未设置、已拓展默许安装或已进行自定义安装。

-y         – 在卸载或重新安装组件在此以前不须求认可。

-q         – 安静格局(减弱输出新闻)。
-v         – 详细模式。
-nologo    – 撤消版权和标题消息。

只顾appPool的设置须为integrated,不然会见世ISAPI and CGI
Restriction的荒谬(不领会干什么小编怎么设置都没这一项展现,WIN7环境?)

-?         – 打印此支持文本。

4、注册WCF组件,执行:ServiceModelReg.exe -i 回车

公海赌船网址 15

即便出现上边包车型地铁音讯,表明注册成功了:

C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication
Foundation>Service
ModelReg -i
Microsoft(陆风X8) Windows Communication Foundation 安装实用程序
[Microsoft (R) Windows (R) Communication Foundation, 版本
3.0.4506.2152]
版权全体 (c) Microsoft Corporation。保留全数权利。

正在安装: Machine.config 节组和处理程序

正在安装: System.Web 生成提供程序

正在设置: System.Web 编写翻译程序集

正在装置: HTTP 处理程序

正在安装: HTTP 模块

正在设置: Web 主机脚本映射

 

安装达成后打开IIS

 

 

在网站上右键,选拔添加网站,在物理路径输入wcfservice项指标途径,然后随便内定3个网站名称即可。

 

 

下一场在大家生死相许的wcf项目上右键,点击添加虚拟目录,接纳到wcf项目标路子,然后随便取多少个小名,添加后如图所示。

 

点击虚拟目录,然后右键选取 转换为应用程序,如图所示

 

 

开发银行网站,在右侧的Service1.svc,右键选用浏览即可

IIS最后配置图片是这样,能够看看网站已经添加进去了,并且插手了虚拟目录(最下边包车型地铁test目录),虚拟目录也转移为了应用程序(变成了浏览器的图标)

公海赌船网址 16

 

就算安顿不错的话,能够看来如下界面,此时大家就早已把webservice宣布到iis上了

公海赌船网址 17

 

自然,小编不是用成立虚拟目录那种措施公布的。vs二零一二用的是.net4.5的语言版本,选择地面发表,然后经过iis附加网站的款型,结果出现了一堆错误。

1.无法激活服务,WCF设置ASP.NET 兼容性

荒谬提醒:不知所厝激活服务,因为它不援救 ASP.NET
包容性。已为此应用程序启用了 ASP.NET 包容性。请在 web.config 中关闭
ASP.NET 包容性方式或将 AspNetCompatibilityRequirements
属性添加到服务类型且同时将 RequirementsMode
设置为“Allowed”或“Required”。

化解办法:

修改相应   服务.svc.cs

using System.ServiceModel.Activation ;

[AspNetCompatibilityRequirements
(RequirementsMode=AspNetCompatibilityRequirementsMode.Required)]

 

 

[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{

  …

}

 

web.config中
 </services>
    
    <serviceHostingEnvironment aspNetCompatibilityEnabled=”true”>
      <baseAddressPrefixFilters>
        …
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
    
    <behaviors>

2.决不可能加载文件或程序集“xxx”或它的某三个凭借项。生成此程序集的运营时比近年来加载的运行时新,不能够加载此程序集
 

壹 、主因是:引用的连串 .net
版本与开发银行的框架分化

windows xp

本身的微处理器->右键管理->Internet音讯服务->默许网站->右键属性->ASP.NET->>
更改相应的asp.net版本即可

windows 7

本人的处理器->右键管理->Internet消息服务(IIS)管理器->双击打开->单击应用程序池->双击要修改的网站->将.NET
Framework 版本修改为相对应的本子即可

2、调试wcf服务时

iis程序池 net framwork 版本和友好项目标net
framwork版本差别导致的,修改iis程序池配置,调节和测试ok。

三 、调整中会出现“未能加载文件或程序集
或它的某二个重视项,拒绝访问”

方法一、停止Indexing   service服务   
 方法二:配置ASP.net   的一时目录不受Indexing   service服务的熏陶   
 方法三:删掉bin目录下的pdb文件   
方法四:修改windows/temp目录权限,设asp.net   Machine   Account为对这么些目录的完全控制权限
等,但都不可能消除难题。

案由是对asp.net对权且文件夹没有读写权限造成的,对C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary
ASP.NET
Files目录授权就足以彻底消除难题,到近期停止还不曾赶上不可能消除的,但前提是文本确实存在,不缺乏文件。

 

④ 、删除掉并再一次加载dll文件,并保管dll文件已经引用到bin文件夹中;

5、赋予C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary
ASP.NET Files读写权限。

整理了下面几个措施仅供参考,经过一番折腾自身发觉是自身的Web.config中的版本难点,因为本身的地头的编排软件应用了最新的是VS贰零零捌编辑的版本4.0而本身的服务器空间的是V3.5的,所以小编利用了第⑤中方法把原本的dll文件删除,上传最新的现在就足以运作。

3.处理程序“PageHandlerFactory-Integrated”在其模块列表中有二个荒唐模块“ManagedPipelineHandler”

三、各种TROUBLESHOOTING啊,

 

原因:

vs2009暗许的是4.0框架,4.0的框架是独自的CLPAJERO,和2.0的分裂,借使想运营4.0的网站,需求用aspnet_regiis注册4.0框架,然后用4.0的Class池,就能够运营4.0的web项目了.

如何用aspnet_regiis注册4.0框架 :

措施如下,运行cmd (win键+奥迪Q5 运转cmd)  ,找到
4.0所在的目录,本身机器目录是 ;

瞩目:要以管理员的身价运维DOS窗口。

复制目录  C:\Windows\Microsoft.NET\Framework\v4.0.30319

运行  aspnet_regiis.exe -i

安装达成,这时的IIS就足以运作 .net 4.0 布署的网站了.

 

能够健康运维的wcf项目标配备文件如下:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="connStr" connectionString="server=10.1.0.17;database=wupublic;uid=slpgdm;pwd=slpgdata@123.com"/>
    <add name="conString" connectionString="server=10.1.0.17;database=BankLoan;uid=slpgdm;pwd=slpgdata@123.com"/>
  </connectionStrings>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
  </appSettings>
  <system.web>
    <!--<compilation debug="true" targetFramework="4.5" />-->
    <!--<httpRuntime targetFramework="4.5"/>-->
    <compilation debug="true"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <!--<behavior>
          -->
        <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
        <!--
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          -->
        <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
        <!--
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>-->
        <behavior name="MyBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <!--<protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>-->
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
    <services>
      <service behaviorConfiguration="MyBehavior" name="WcfService.Service1">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="NewBinding0" contract="WcfService.IService1"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="NewBinding0" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
          <security mode="None"/>
        </binding>
      </basicHttpBinding>
    </bindings>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。
        在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。
      -->
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

 

WCF ASP.NET (405) Method Not Allowed

请看这一段

http://social.msdn.microsoft.com/Forums/br/wcf/thread/31d3f1aa-28b6-4bd7-b031-73b7e7588e6d

Hi,
    Normally, 405 error code is because two reasons;
1) ASP.NET is not installed or register to your IIS
2) The *.svc file type is not mapped to the aspnet_isapi.dll
to solve problem:

  1. register ASP.NET runtime from VS.NET 2005/2008 command line run:
    aspnet_regiis –i –enable

 
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30128\aspnet_regiis.exe
-iru

2. map *.svc file by

2.1 Win2003 or XP run: “%WINDIR%\Microsoft    
.Net\Framework\v3.0\Windows Communication
Foundation\ServiceModelReg.exe” -r

(如若是陆10个人,要挑选六13位的,反正笔者今天是这样选取的)

2.2 Win2008 or Vista run:
“%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication
Foundation\ServiceModelReg.exe” -L

  1. then restart your IIS  iisreset /noforce
    Hope this helps,
    -Jirapong

公海赌船网址 18

首先在

ASP.NET 4.0 不能够加载
System.ServiceModel.Activation.HttpModule

Could not load type ‘System.ServiceModel.Activation.HttpModule’ from
assembly ‘System.ServiceModel, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089′”

This error can occur when IIS is installed after installing .NET
Framework 4, or if the 3.0 version of the WCF Http Activation module is
installed after installing IIS and .NET Framework 4.

To resolve this problem, you must use the ASP.NET IIS Registration Tool
(Aspnet_regiis.exe,) to register the correct version of ASP.NET. This
can be accomplished by using the –iru parameters when running
aspnet_regiis.exe as follows:

aspnet_regiis.exe -iru

*
*

③ 、WCF在WEB.CONFIG中serviceModel节点的铺排

*
*

公海赌船网址 19

*
*

使WCF能支撑ASP SESSION等的安顿:aspNetCompatibilityEnabled = “true “

<serviceHostingEnvironment multipleSiteBindingsEnabled=” true”
aspNetCompatibilityEnabled =”true “>

只有加了webHttpBinding才能在网页中调用(比如ajax)

<endpoint address=”” binding= “webHttpBinding”

这一条元数据调换是必备的

<endpoint address=” mex” binding=” mexHttpBinding” contract=”
IMetadataExchange” />

endpoint也是要设置的,这几个是指的wcf server host在IIS中的配置

<host>

   < baseAddresses>

      < add baseAddress
=”http://localhost:8080/QuestionnaireService.svc ” />

   </ baseAddresses>

</ host>

Behavior中定义了WCF服务的一举一动方式,比如要求禁止使用GET访问,则HttpGetEnabled
= false

maxReceivedMessageSize 过小会使得接收的JSON串过大时出错

receiveTimeout 也急需转移为适龄的值

直接RUN(DEBUG情势)WCF项目后,会活动触发wcfTestClient.exe工具,但改回到暗中同意为webHttpBinding后,就木有了=
。- 要切磋一下

C#

[ServiceBehavior(Name = “QuestionnaireService”,

        InstanceContextMode = InstanceContextMode.PerSession,

        ConcurrencyMode = ConcurrencyMode.Single)]

public class QuestionnaireService : IQuestionnaireService

    {

        [ WebInvoke(UriTemplate=”GetQuestionnaireData” )]

        [ ScriptMethod(UseHttpGet = false , ResponseFormat =
ResponseFormat.Json)]

public string GetQuestionnaireData(string id)

        {

            serviceInit();

XMLQuestionnaire qn = new Questionnaire.Lib.Entities.Questionnaire
().Get(id.ToInt()).QuestionnaireDTO;

//清除不须求用在界面上的因素,减弱RESPONSE大小

            qn.categories = null;

return qn.ToJSON();

        }

设若出现那些题材,AppPool没有设置成4.0

公海赌船网址 20

假使那一个菜单不出新

公海赌船网址 21

那就再加一个WCF SEMuranoVICE进去

IIS网站本机能够访问,局域网其余机器不能够访问的标题:

在布局网站到服务器的时候,发现当地访问网站没难题,不过局域网其余机器无法访问,大概在把相应端口映射后,外网也不可能访问开头化解方案——防火墙规则

千帆竞发】打开【控制面板】,选择【WINDOWS 防火墙】,进入

在防火墙界面,选拔左边边栏的【高级设置】

在弹出的高档安全Windows防火墙界面中,选拔右边边栏的【入站规则】,然后在右边边栏选用【新建规则】

在弹出的窗口中完结如下操作:

1.选择【端口】,下一步;

2.选项【TCP】以及【特定地方端口】,填入要开放的端口号(或开放全体端口,能够以逗号分隔两个端口),下一步;

3.【允许连接】,下一步;

  1. 网络项目全部勾选,下一步;

5.【名称】中填入自定义名称,如:IIS 【实现】。

 

相关文章