0%

SqlServer的存储过程使用到了分布式事务的时候,需要开启MSDTC服务并且设置相应的安全设置设置

链接服务器开启 RPCRPC Out

检查双边的服务器是否开启了以下服务

sqlserver-linkserver-transaction-2018530165547

检查双边 打开’控制面板’->’管理工具’->’组件服务’,点开’组件服务’->’计算机’->’我的电脑’,然后展开“我的电脑”,找到

sqlserver-linkserver-transaction-2018530165757
右键属性 设置为如下
sqlserver-linkserver-transaction-201853016592

SET XACT_ABORT ON

另外 存储过程中 可以根据自己的需求来决定是否添加如下代码

SET XACT_ABORT ON

SET XACT_ABORT ON的作用分为两种:

总体作为一个事务,整体提交或整体回滚,格式为:

SET XACT_ABORT ON
BEGIN TRAN
    --要执行的语句
COMMIT TRAN
GO

每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:

SET XACT_ABORT ON
BEGIN
    --要执行的语句
END
GO

最近项目里面用到了React但是发布到iis站点之后,路由地址 刷新访问直接404错误。查阅资料之后发现是iis缺少配置URL重写 的问题导致的。下面我们来图形化配置,简单的配置下IIS

打开IIS使用 Web平台安装程序

搜索url关键字,您会看到

React-Router-browserHistory-IIS-2018518104435
直接安装

关掉IIS 重新打开IIS在站点右边的控制面板可以看到一个URL重写的功能

新增配置如下

React-Router-browserHistory-IIS-2018518104817

也可以直接 使用我的配置

配置如下 关键节点是:rewrite

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReactRouter" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_METHOD}" pattern="^GET$" />
<add input="{HTTP_ACCEPT}" pattern="^text/html" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

附:其他http-server配置说明

Nginx

1
2
3
4
5
6
7
8
9
10
server {
server_name react.yahui.wang
listen 80;

root /wwwroot/ReactDemo/dist;
index index.html;
location / {
try_files $uri /index.html;
}
}

Tomcat

找到conf目录下的web.xml文件,然后加上一句话让他定位回来

1
2
3
4
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>

Apache

.htaccess文件配置如下

1
2
3
4
5
6
7
8
9
10
11
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /index.html [L]

</IfModule>

转载请注明出处 http://blog.yahui.wang/2018/05/18/React-Router-browserHistory-IIS/

Gitlab

GitLab是一个Git的代码托管工具,有免费的社区版允许我们在本地搭建代码托管网站,也有付费的企业版网站,能够在线托管代码。传统方式是手动下载Gitlab的软件包,然后搭建相关运行环境。不过这种方式非常麻烦,而且如果要更换机器所有配置工作又得重来一边,如果有同学学过Java的话应该记得初学Java时配置环境变量的恐惧吧?因此更好的办法就是使用现在非常流行的Docker。

那么Docker又是个什么东西呢?这是一个虚拟化的运行工具,主要目的是将软件和整个运行环境打包起来,让我们不需要配置即可快速运行软件。由于Docker依赖于Linux内核的某些特性,所以Docker只能在Linux上运行。Windows上的Docker实际上是开了一个虚拟机。Docker目前好像没有比较好的中文社区,我谷歌了一下只找到了这个Docker中文社区,看起来还行。

下载Gitlab

配置好加速器之后,下载就很快了。直接执行下面的命令,稍等片刻之后,Docker就会将Gitlab下载好了。

1
sudo docker pull gitlab/gitlab-ce:latest

启动Gitlab

用下面的命令启动一个默认配置的Gitlab。如果我们只在本机测试使用的话,将hostname替换为localhost。如果需要让外部系统也能访问的话使用外网IP地址。

1
2
3
4
5
6
7
8
9
sudo docker run --detach \
--hostname gitlab.yahui.wang \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

首次启动可能比较慢,需要等待一分钟左右的时间。我们可以使用sudo docker ps命令查看当前所有Docker容器的状态。当它的状态由starting变为运行时间时,说明成功启动了。我们直接使用上面配置的IP地址(如localhost)在浏览器中访问即可。

初次使用需要我们创建默认管理员密码,随便指定一个就行了。然后我们需要注册一个普通用户。以后的使用方法和Github这样的工具很相似了。

配置Gitlab

刚刚启动Gitlab的时候需要我们输入一个密码,这个密码是管理员用户的密码。我们在登录那里使用root作为用户名,然后用刚刚设置的密码,就可以以管理员身份登录Gitlab。

登录进去之后,点击右上角的齿轮图标,即可进入到管理员页面。在这里我们可以设置很多东西。比如说,默认情况下每个用户只能创建10个仓库,我们可以改变这个设置。在管理员页面点击右面的齿轮,再点击设置,就会进入到系统设置中。然后找到Default projects limit一项,我们给它设个小目标,设它一个亿,这样就相当于无限仓库了。当然如果你实际硬盘满了也就不能在创建更多项目了。

如果这些配置还是不能满足你的需求的时候,还可以直接配置Gitlab。首先进入到Docker环境中。我们使用下面的命令进入Docker环境的bash中。gitlab是刚刚指定的Gitlab名称。

1
sudo docker exec -it gitlab /bin/bash

然后就进入了Docker的环境中,我们可以把它当作一个独立的系统来使用。然后编辑/etc/gitlab/gitlab.rb文件,这是Gitlab的全局配置文件。所有选项都可以在这里配置。

1
nano /etc/gitlab/gitlab.rb

详细的配置方法我也不会,直接看官方文档吧。

更新Gitlab

以后如果需要更新Gitlab版本,首先需要停止并删除当前的Gitlab实例。

1
2
sudo docker stop gitlab
sudo docker rm gitlab

然后在拉取最新版的Gitlab。

1
sudo docker pull gitlab/gitlab-ce:latest

然后在使用上次的配置运行Gitlab即可。不用担心数据会丢失。只要你的volume参数指定还和上次一样,Gitlab就会自动读取这些配置。

1
2
3
4
5
6
7
8
9
sudo docker run --detach \
--hostname gitlab.yahui.wang \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

最后来看看使用Docker的优势。还是在Gitlab的Bash中。我们依次输入下面的命令,看看有什么反应。

1
2
3
4
ruby --version
git --version
redis-cli --version
psql --version

不出意外的话应该会显示对应软件的版本。我们看到Gitlab使用了4个开源软件或运行环境:ruby、git、redis和postgresql。如果我们手动安装Gitlab的话,这几个软件也必须分别安装和配置好。这个任务的难度可是非常大的。而且如果需要在多台机器上配置,那么任务量就更大了。但是如果使用Docker的话,我们甚至完全没必要知道这几个软件的存在,简单两条命令即可创建和运行Gitlab。这正是Docker的魅力,难怪现在越来越多的公司在使用Docker。

补充

使用docker-compose部署的话

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.yahui.wang'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.yahui.wang'
gitlab_rails['gitlab_shell_ssh_port'] = 2202
gitlab_rails['time_zone'] = 'Asia/Shanghai'
ports:
- '8008:80'
- '2202:22'
volumes:
- '/data/gitlab/config:/etc/gitlab'
- '/data/gitlab/logs:/var/log/gitlab'
- '/data/gitlab/data:/var/opt/gitlab'

参考资料
https://yq.aliyun.com/articles/29941
https://docs.gitlab.com/omnibus/docker/README.html#gitlab-docker-images
http://blog.csdn.net/u011054333/article/details/61532271

Git第一步,本地开发环境部署

基本环境安装

Mac环境

安装包管理工具 Homebrew

brew 全称HomebrewMac OSX上的软件包管理工具,官网https://brew.sh/
Homebrew 安装和卸载工具 只用一行命令就能完成

打开Mac OSX的命令终端
执行命令

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

命令执行完毕,既可以完成brew的安装

Mac安装GIT环境

命令终端输入:

1
brew install git

安装好之后建议安装下 smartgit便于管理本地git仓库

Window环境

安装包管理工具 chocolatey

Windows系统也有个很好用的包管理工具 chocolatey,这里我们使用chocolatey来很方面的安装我们需要的基本环境
说先安装 chocolatey
使用组合键(Win+X+A)打开Windows的命令终端 PowerShell or CMD

注意命令终端要在管理员模式下运行

  • 如果您使用的是CMD
1
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
  • 如果您使用的是PowerShell
1
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

可能需要等待一会,具体等待时间由个人网络情况而定

Window安装GIT环境

安装好chocolatey之后我们可以安装各种开发环境和开发工具了

安装GIT

1
choco install git -y

安装完毕之后建议安装个tortoisegit 便于在资源管理器中管理本地git仓库

1
choco install tortoisegit -y

配合主流IDE使用

VisualStudio

AndroidStudio

Xcode

VSCode

Sublime

WebStorm

镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):

通过config命令

1
2
npm config set registry https://registry.npm.taobao.org
npm info underscore (如果上面配置正确这个命令会有字符串response)

命令行指定

1
npm --registry https://registry.npm.taobao.org info underscore

编辑 ~/.npmrc

例如:C:\Program Files (x86)\nodejs\node_modules\npm\npmrc 文件 加入下面内容

1
registry = https://registry.npm.taobao.org

搜索镜像: https://npm.taobao.org

建立或使用镜像,参考: https://github.com/cnpm/cnpmjs.org

如果想换回来请吧上面的registry参数https://registry.npm.taobao.org改为https://registry.npmjs.org/即可

centos7.* 安装 python3,pip3

yum安装方式

添加epel源

1
yum install epel-release

安装Python3.4

1
python34

安装pip3

1
2
yum install python34-setuptools
easy_install-3.4 pip

之后就可以使用pip3

1
pip3

源代码编译安装此方法兼容保留Python2共存

安装依赖环境

1
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

查看最新的Python版本

浏览器打开 https://www.python.org/ftp/python/ 查看最新的Python版本,标记为3.A.B

1
wget https://www.python.org/ftp/python/3.A.B/Python-3.A.B.tgz

创建Python3的目录

1
mkdir /usr/local/python3

解压下载文件并切换目录

1
2
3
tar -zxvf Python-3.A.B.tgz

cd Python-3.A.B

执行

1
2
./configure --prefix=/usr/local/python3
make && make install

创建Python3的软链接

1
ln -s /usr/local/python3/bin/python3 /usr/bin/python3

创建Pip3的软链接

1
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

测试命令 python3 和 pip3

1
2
python3
pip3

总体安装 3.6.6的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
yum -y install gcc automake autoconf libtool make
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
mkdir /usr/local/python3
tar -zxvf Python-3.6.6.tgz
cd Python-3.6.6
./configure --prefix=/usr/local/python3
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
python3 -V
pip3 -V

稍作修改就变成了 2.7 的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar vxf Python-2.7.6.tgz
cd Python-2.7.6
./configure --prefix=/usr/local
make && make install
/usr/local/bin/python2.7 -V
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
python -V
#sed -i "s/#!//usr//bin//python/#!//usr//bin//python2.6.6/g" /usr/bin/yum
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
easy_install pip
rm -rf /usr/bin/{pip,pip2}
ln -s /usr/local/bin/pip /usr/bin/pip
ln -s /usr/local/bin/pip /usr/bin/pip2
#vim /usr/bin/yum
# 将文件头部的
# #!/usr/bin/python

# 改成
# #!/usr/bin/python2.6.6

我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。所以使程序在后台跑有以下三个好处:

1:我们这边是否关机不影响日本那边的程序运行。(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼)

2:不影响计算效率

2:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情。

&

在您执行的程序后面加上 &,可以把当前命令放到后台执行,但是退出终端的时候,当前程序会退出

1
watch  -n 10 sh  test.sh  &  #每10s在后台执行一次test.sh脚本

ctrl + z

可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

jobs

查看当前有多少在后台运行的命令

jobs -l选项可显示所有任务的PIDjobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell`` 从当前的shell`环境已知的列表中删除任务的进程标识。

nohup

nohup最简单暴力,让程序使用在后台执行,就算关闭了当前的终端也执行(&是做不到的)。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)。

1
ps -aux | grep "test.sh"  #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分

setsid

nohup 通过忽略 HUP 信号来使我们的进程避免中途被中断,但如果我们换个角度思考,如果我们的进程不属于接受 HUP 信号的终端的子进程,那么自然也就不会受到 HUP 信号的影响了。setsid 就能帮助我们做到这一点

1
2
setsid ping blog.yahui.wang
ps -ef |grep blog.yahui.wang

输出

1
2
xxx    77335      1  0 13:13 ?        00:00:00 ping www.ibm.com
xxx 77445 77359 0 13:14 pts/2 00:00:00 grep --color=auto www.ibm.com

值得注意的是,它的父 ID(PPID)为1(即为 init 进程 ID),并不是当前终端的进程 ID。可以自己动手将此例与nohup 例中的父 ID 做比较。体会更多。

disown

如果事先在命令前加上 nohup 或者 setsid 就可以避免 HUP 信号的影响。但是如果我们未加任何处理就已经提交了命令,该如何补救才能让它避免 HUP 信号的影响呢?这时想加 nohup 或者 setsid 已经为时已晚,只能通过作业调度和 disown 来解决这个问题了。

在我们的日常工作中,我们可以用 CTRL-z 来将当前进程挂起到后台暂停运行,执行一些别的操作,然后再用 fg 来将挂起的进程重新放回前台(也可用 bg 来将挂起的进程放在后台)继续运行。这样我们就可以在一个终端内灵活切换运行多个任务,这一点在调试代码时尤为有用。因为将代码编辑器挂起到后台再重新放回时,光标定位仍然停留在上次挂起时的位置,避免了重新定位的麻烦。

1.用disown -h jobspec 来使某个作业忽略HUP信号。
2.用disown -ah 来使所有的作业都忽略HUP信号。
3.用disown -rh 来使正在运行的作业忽略HUP信号。

需要注意的是,当使用过 disown 之后,会将把目标作业从作业列表中移除,我们将不能再使用jobs来查看它,但是依然能够用ps -ef查找到它。

但是还有一个问题,这种方法的操作对象是作业,如果我们在运行命令时在结尾加了”&”来使它成为一个作业并在后台运行,那么就万事大吉了,我们可以通过jobs命令来得到所有作业的列表。但是如果并没有把当前命令作为作业来运行,如何才能得到它的作业号呢?答案就是用 CTRL-z(按住Ctrl键的同时按住z键)了!

CTRL-z 的用途就是将当前进程挂起(Suspend),然后我们就可以用jobs命令来查询它的作业号,再用bg jobspec 来将它放入后台并继续运行。需要注意的是,如果挂起会影响当前进程的运行结果,请慎用此方法。

screen

我们已经知道了如何让进程免受 HUP 信号的影响,但是如果有大量这种命令需要在稳定的后台里运行,如何避免对每条命令都做这样的操作呢?

此时最方便的方法就是 screen 了。简单的说,screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。screen 的参数很多,具有很强大的功能,我们在此仅介绍其常用功能以及简要分析一下为什么使用 screen 能够避免 HUP 信号的影响。

使用 screen 很方便,有以下几个常用选项:

  • 用screen -dmS session name 来建立一个处于断开模式下的会话(并指定其会话名)。
  • 用screen -list 来列出所有会话。
  • 用screen -r session name 来重新连接指定会话。
  • 用快捷键CTRL-a d 来暂时断开当前会话。

参考:
Linux 技巧:让进程在后台可靠运行的几种方法

htop是一个Linux进程监视工具,它是top命令的替代工具,它是Linux和Unix操作系统中的标准和默认进程监视工具。但是CentOS 7上的htop更易于用户使用,并且与Linux的top命令相比,输出更容易阅读。
在本教程中,我们将学习如何使用yum install命令和epel存储库在CentOS 7上安装htop。
在CentOS 7上安装htop我们想添加CentOS epel版本库,因为htop软件包没有默认的CentOS yum版本库。

安装Epel版本

首先,启用CentOS 7上的epel版本。

1
sudo yum -y install epel-release

用Yum命令安装htop

现在我们可以使用yum install命令安装CentOS htop。

1
sudo yum -y install htop

现在开始htop程序,打开Linux终端并键入htop

您可以看到htop过程监控工具的输出更具可读性,易于理解。

总结:htop CentOS 7

在本教程中,我们使用epel存储库在Linux CentOS 7上安装了htop。

首先,我们启用epel-release,然后使用yum命令安装htop(没有epel-release,您将收到以下错误“No package htop available”)。

我们也可以用同样的方法在CentOS 6.5及以前的版本上安装htop。

附:编译方式安装Htop

1
2
3
4
5
6
# 安装GCC 和编译Linux内核的库
yum install -y gcc ncurses-devel
wget http://sourceforge.net/projects/htop/files/latest/download
tar -zxf download
cd htop-1.0.2
./configure && make && make install

这里我们要介绍下 acme.sh ,它实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证.”,今天我们就要用到acme.sh的这个DNS验证来获得Let’s Encrypt免费证书以便在七牛云里使用。

获取Let’s Encrypt免费证书

首先你需要一个VPS来运行acme.sh这个脚本,然后照着【使用acme.sh快速部署生成Let’s Encrypt免费证书】一文里的相关教程用DNS验证方法来申请Let’s Encrypt免费证书,对国内的DnsPod和CloudXNS支持是最好的,明月正好用的是DnsPod,于是获得马上登陆CloudXNS获得API KEY和SECRET KEY,键入下面的命令:

export DP_Id="40279"
export DP_Key="f2ad63666b3ec9da28fe6f6274ae72b8"

这样就可以让acme.sh脚本使用域名解析服务商的API来做DNS验证域名所有权了。(吐槽一下:原来域名解析服务商的API还有这个好处呀,汗!)
然后继续键入如下命令:

acme.sh --issue --dns dns_dp -d yahui.wang -d blog.yahui.wang

因为明月用的是二级域名,所以就不用指定主域名了,我用的是如下的命令:

acme.sh --issue --dns dns_dp -d blog.yahui.wang

其中的pic.example.com就是你要申请证书的二级域名,这里也可以理解为是需要绑定到七牛云空间的域名。
因为需要验证TXT记录啥的,所以键入上述命令后会提示需要120秒等待时间,时间完成后就获得了这个域名的SSL证书了,为了保险期间明月强烈建议将这个域名证书文件copy到一个比较安全和自由的目录里,acme.sh默认保存的不容易获取。
可以使用如下命令来copy证书文件到指定目录:

acme.sh --installcert -d mydomain.com \
--key-file /etc/nginx/ssl/mydomain.key \
--fullchain-file /etc/nginx/ssl/mydonain.cer \

上述里面的mydomai.com和domain修改为申请的域名,文件路径根据自己的情况指定即可。

至此,Let’s Encrypt免费证书申请获取完成了。记得下载SSL证书文档到本地以便在七牛里导入这个证书,证书文档分别是.key和.cer文件。

七牛云里使用Let’s Encrypt免费证书

登陆七牛云控制面板后,在“SSL证书管理”里点击“上传自由证书”。

输入“证书备注名”
“证书内容”即为.cer文件的内容,使用类似EditPlus即可打开,只需要复制后粘贴到“证书内容”即可。
“证书私钥”即为.key文件的内容,使用类似EditPlus即可打开,只需要复制后粘贴到“证书私钥”即可。

然后,点击“确定上传”即完成了七牛云导入Let’s Encrypt免费证书。

在七牛云的绑定域名管理里选择要使用https的域名,点击“升级到HTTPS”,

如果域名和上传的证书匹配,在那么就可以在下拉框里选择证书后提交即可

总结

今天明月也是收获不少再次叹服一下acme.sh的强大和Let’s Encrypt的免费,因为有了他们我们草根博客站长们也可以使用看着很“高大上”的https了,并且还是“免费”的,这个很重要。看来全民HTTPS时代真的是来临了!

Senparc.Weixin.MP高度集成了对接微信相关API的调用逻辑,并且官方有较为完整的示例代码,所以我们第一步接入站点,几乎是傻瓜式的。

注册开放平台账号并且开通第三方服务功能

点击创建第三方平台

如图所示

填写资料

如同所示

Clone代码

github

配置站点

Senparc.Weixin.MP提供了NetCore 2.0等版本的项目例子,这里我们以 src\Senparc.Weixin.MP.Sample\Senparc.Weixin.MP.Sample里的代码为例。

Web.config

修改web.config里的代码,如果所示

修改web.config里的代码,如果所示

Controller

OpenController里的用于示例的域名http://sdk.weixin.senparc.com改为自己的域名

运行调试项目

需要注意的是 微信每10分钟 发送一次Notice到你的站点上,你的站点需要有通知到之后才可以做发起授权的操作。