WebMatrix帮你方便地搭建你的个人应用站点,是时候行动起来了!

 

    首先,需要介绍一下WebMatrix,这到底是个什么东东呢?它又能为我们带来什么便捷的开发体验呢?

 

    简单来说,它是一个集成了IIS,VS,database等(都是专门的嵌入型)的工具,可以帮助我们开发和部署应用,这么说,貌似VSTS更加强大,且慢,它为我们提供了众多可用的现成应用,这些可以通过Web Gallery来获取,你需要做的仅仅是选择一个应用,然后点击下载安装,它便会帮你将你的机器打造成可以正常运行该应用的环境,非常简洁!我第一次是直接选用了一个blog应用,并直接部署,一切成功!同时,它还提供了很多的模板供我们选择,都是常用的模板分类,很方便;此外,我们可以导入我们已经编写的应用,然后进行部署!

 

    只是,这个魔方还仅仅是个beta版本,暂时也不支持调试功能,但可以通过提供的VS按钮打开VS来进行修改,也算是个偏方儿吧!

 

    值得一提的是,此次WebMatrix发布,同时也有很多的厂商参与,所以想为自己的应用找一个服务器也变得更加的简单,目前大多数的供应商都提供至少2个月的免费使用期,有的甚至免费到年底,你大可以没事儿的时候搭建个网站找找感觉,免费的体验时代真好……

 

    如果你整盘算着弄一个属于自己的网站的话,WebMatrix会以最快的速度帮你完成你的站点!

 

    WebMatrix相关的链接如下:

    下载链接:http://www.microsoft.com/web/webmatrix/download/

    相关介绍:http://weblogs.asp.net/scottgu/archive/2010/07/06/introducing-webmatrix.aspx

    http://www.hanselman.com/blog/MicrosoftWebMatrixInContextAndDeployingYourFirstSite.aspx

 

    下面是自己成功部署一个自己的ASP.NET MVC 2.0应用的过程,如果你也在用MVC 2.0开发应用的话,可能会对你有所启发,避免绕弯路……

 

   自己写了一个小的ASP.NET MVC 2.0的应用,想部署到一个国外的服务器上,因为这个应用使用了ASP.NET附带的Membership来管理用户,所以需要将这个ASPNETDB的数据库转移到相应的SQL Server 2008中,这个到没有什么难度:

 

         1 SQL Server 2008中新建一个ASPNETDB的数据库

 

         2 执行“C:\Windows\Microsoft.NET\Framework\v2.0.50727”目录中的aspnet_regsql.exe程序,初始化Membership数据库

 

         3 修改web.config中的链接值为:

 

      <connectionStrings>

           <add name="ApplicationServices" connectionString="Data Source= ;Initial Catalog=;User Id=;Password=" providerName="System.Data.SqlClient" />

      </connectionStrings>

 

              4 OK,一切就绪了,调试程序,转移完成。

 

 

         本地的转换时很顺利的,但是当我试图将工程文件和数据库部署到远程服务器上的时候,问题又出现了,总是提示:

 

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AS" in the equal to operation.

 

         查了一下,可能是因为不同数据库间采取的排序规则不同导致的,但是因为我是采用的远程部署,可见不是这个原因!

 

         还有一个原因,也会导致这个异常,就是在存储过程中,我们创建的临时表有可能会引起这个问题,需要在定义临时表的时候,添加COLLATE Chinese_PRC_CI_AS 即可解决问题,当然,具体采用哪种排序规则,要看具体的提示内容决定。这里还有一个小问题需要注意,上面那句定义排序规则的话,只是针对字符串相关字段,而且必须在类型后面紧挨着定义,否则将会有语法错误,正确的写法如下:

 

DECLARE @tbNames   table(Name nvarchar(256) COLLATE Chinese_PRC_CI_AS NOT NULL PRIMARY KEY)

 

         请注意其所在位置即可。

 

         接下来遭遇的一个问题更加的棘手,当我把工程和数据库都成功部署到服务器后,满心欢喜地打开网站提供给我的网站URL,首页还没有问题,但是一旦进入需要有数据库连接的页面,就会报下面的异常:

 

Server Error in '/' Application.  

Keyword not supported: 'data source'.   

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.   

Exception Details: System.ArgumentException: Keyword not supported: 'data source'.  

Source Error:   

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

 

 

         起初以为是自己的数据库连接字符串有问题,于是把精力都放在尝试多种不同的字符串写法,但是后来发现者一切都是徒劳,因为总是本地调试可以正常工作,一旦部署到服务器,又不能工作了,挫败感很强烈啊,而且持续了好几天……

 

         没办法,只能到ASP.NET的官方论坛发帖救助,一个哥们的一个相似的解决思路帮了我大忙,其实,我也就是随便的试了一下,因为无论我的链接字符串中是否出现了Data Source,都会出现这个提示,我干脆把连接写到程序里面需要调用的地方那个,而不是通过相关类调用web.config的方式,奇迹发生了, 网站终于正常工作了!热泪盈眶啊……

 

         奇怪的是,在我们定义Repository的时候,使用带数据库连接参数的初始化方法可以,但是使用默认的五参数的不行,很怪异,后来想了一下,可能是服务器上文件夹的权限管理比较严格,无法正常从web.config 中获取连接字符串?那为啥我的另外一个报春membership数据的数据库就可以工作呢?

 

         总而言之,只可能是权限,或者EF初始化方法上的问题了。

 

         下面列出相关的内容以作参考:

 

Web.config

 

<connectionStrings>
<add name=
"ApplicationServices" connectionString="Data Source=webmatrix01.cytanium.com;Initial Catalog=;User Id=;Password=" providerName="System.Data.SqlClient"/>
<add name=
"HobbyNotesContainer" connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=webmatrix01.cytanium.com;Initial Catalog=;User ID=;Password=;MultipleActiveResultSets=True;&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>

 

xxxRepository.cs:

private HobbyNotesContainer db = new HobbyNotesContainer("metadata=res://*;provider=System.Data.SqlClient;provider connection string=\"Data Source=webmatrix01.cytanium.com;Initial Catalog=HobbyNotes;User ID=gavin;Password=198396Yang;MultipleActiveResultSets=True;\"");
注意,这里如果使用private HobbyNotesContainer db = new HobbyNotesContainer();则部署后,会提示异常!
 
此外,我的第一个个人站点时一个小应用,欢迎大家来踩一下,哈哈:
http://guilinyang.webmatrix01.cytanium.com/
希望能对你有所帮助~
 

 

posted on 2010-07-16 15:03  酸甜西瓜  阅读(2606)  评论(16编辑  收藏  举报