您的位置:首页 > 其它

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

2010-07-16 15:03 357 查看
首先,需要介绍一下WebMatrix,这到底是个什么东东呢?它又能为我们带来什么便捷的开发体验呢?

简单来说,它是一个集成了IIS,VS,database等(都是专门的嵌入型)的工具,可以帮助我们开发和部署应用,这么说,貌似VSTS更加强大,且慢,它为我们提供了众多可用的现成应用,这些可以通过WebGallery来获取,你需要做的仅仅是选择一个应用,然后点击下载安装,它便会帮你将你的机器打造成可以正常运行该应用的环境,非常简洁!我第一次是直接选用了一个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.NETMVC2.0应用的过程,如果你也在用MVC2.0开发应用的话,可能会对你有所启发,避免绕弯路……

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

(1)在SQLServer2008中新建一个ASPNETDB的数据库

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

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

<connectionStrings>

<addname="ApplicationServices"connectionString="DataSource=;InitialCatalog=;UserId=;Password="providerName="System.Data.SqlClient"/>

</connectionStrings>

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

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

Cannotresolvethecollationconflictbetween"SQL_Latin1_General_CP1_CI_AS"and"Chinese_PRC_CI_AS"intheequaltooperation.

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

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

DECLARE@tbNamestable(Namenvarchar(256)COLLATEChinese_PRC_CI_ASNOTNULLPRIMARYKEY)

请注意其所在位置即可。

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

ServerErrorin'/'Application.

Keywordnotsupported:'datasource'.

Description:Anunhandledexceptionoccurredduringtheexecutionofthecurrentwebrequest.Pleasereviewthestacktraceformoreinformationabouttheerrorandwhereitoriginatedinthecode.

ExceptionDetails:System.ArgumentException:Keywordnotsupported:'datasource'.

SourceError:

Anunhandledexceptionwasgeneratedduringtheexecutionofthecurrentwebrequest.Informationregardingtheoriginandlocationoftheexceptioncanbeidentifiedusingtheexceptionstacktracebelow.

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

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

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

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

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

Web.config

<connectionStrings>
<addname="ApplicationServices"connectionString="DataSource=webmatrix01.cytanium.com;InitialCatalog=;UserId=;Password="providerName="System.Data.SqlClient"/>
<addname="HobbyNotesContainer"connectionString="metadata=res://*;provider=System.Data.SqlClient;providerconnectionstring="DataSource=webmatrix01.cytanium.com;InitialCatalog=;UserID=;Password=;MultipleActiveResultSets=True;""providerName="System.Data.EntityClient"/>
</connectionStrings>

xxxRepository.cs:

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

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: