2010-10-22 75 views
0

我剛開始使用VS 2010創建Cloud Service(HealthTracker),並且我將MVC2 Web項目附加到它。當我點擊調試時,dev結構已經啓動,我可以按照預期在我的機器上瀏覽我的web應用程序。在VS 2010雲服務項目中重命名Web角色

我決定MVCWebRole2是我的網絡應用程序的壞名字,所以我將它重命名爲HealthTrackerMVC。我使用Refactor - > Rename將MVCWebRole2更改爲HealthTrackerMVC。我建立了乾淨的現在,當我點擊調試時,開發結構開始啓動,並且Web應用程序從不啓動,並最終退出調試模式,而無需執行任何操作。

我該如何解決這個問題?我寧願不與一切重新開始......

UPDATE

我已經檢查了ServiceConfiguration.cscfg的ServiceDefinition.csdef中和解決方案文件。所有名稱匹配,並且所有GUID匹配。我甚至重命名了HealthTrackerMVC(以前名爲MVCWebRole2)的文件夾,並編輯瞭解決方案文件以指向新項目。一切正常加載和構建。 Development Fabric顯示HealthTrackerMVC開始,說它很忙,然後關閉它,相當快。見附件的屏幕截圖:
alt text

所以我知道我的web角色正在啓動...爲什麼它關閉得這麼快?

回答

2

檢查Azure配置文件,因爲兩者都引用角色名稱,我不相信VS的重構命令命中。如果您的項目正在建設並且角色根本沒有啓動,那麼最有可能的原因是角色不知道要開始什麼。

ServiceDefinition.csdef中

<?xml version="1.0" encoding="utf-8"?> 
<ServiceDefinition name="YourAzureService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> 
    <WebRole name="HealthTrackerMVC" vmsize="Small" enableNativeCodeExecution="true"> 

... 

ServiceConfiguration.cscfg

<?xml version="1.0"?> 
<ServiceConfiguration serviceName="YourAzureService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"> 
    <Role name="HealthTrackerMVC"> 

... 

如果不行,右鍵點擊下的 「角色」解決方案資源管理器中的Cloud Service項ADD菜單應該有一個「解決方案中的Web角色項目」選項。選擇並鏈接你的新角色。刪除舊的作用,以及在這一點上


如果仍然無法正常工作,轉到該項目被存儲在文件系統,然後在文本打開.ccproj文件(雲服務項目)編輯。

查找對前一個角色的引用(ccproj是MSBUILD格式)。這將是這樣的:新HealthTrackerMVC項目(姓名和.csproj的REF)

<ItemGroup> 
    <ProjectReference Include="Folder\MVCWebRole2.csproj"> 
     <Name>YourAzureService</Name> 
     <Project>{26f72b59-1423-4175-b401-9c8f5f45db2a}</Project> 
     <Private>True</Private> 
     <RoleType>Web</RoleType> 
     <RoleName>MVCWebRole2</RoleName> 
    </ProjectReference> 
    </ItemGroup> 

變化參考,你應該是好去。 最有可能的項目GUID沒有改變,但如果它以某種方式做了,只需打開SLN文件即可獲取該數字。

一旦你改變這個VS應該提示重新加載解決方案/項目。如果沒有,你應該重新加載。

+0

這很有幫助,但沒有解決問題。此外,添加「解決方案中的Web角色項目」選項變灰。 – 2010-10-23 04:16:51

+0

灰色表示UI已經引用可能提供給解決方案的唯一.csproj。根據你的編輯,某些東西會使織物崩潰。名稱改變了你改變的唯一的東西嗎? (例如,你是否改變了班級名稱等) – 2010-10-23 05:24:02

1

我建議檢查Web.config文件和實際啓動邏輯(即Azure結構被稱爲默默地殺死無效的web配置web項目沒有提出任何錯誤,在這個時候,只是讓我的生活精彩的幾次)。

只是一些想法。例如,您可以嘗試單獨啓動Web項目(就像通常的項目一樣)。如果可行 - 刪除一個現有的Web角色,並添加一個新的解決方案(引用這個Web項目),並嘗試在開發結構中運行它。如果沒有,但Web項目單獨運行 - 將其導出到新的解決方案,並添加到新的Web角色。

0

這是一個有點長鏡頭,但如果你已覆蓋RoleEntryPoint和覆蓋Run方法,它應該包含這樣的

public override void Run() 
{ 
    while (true) 
    { 
     Thread.Sleep(8000); 
    } 
} 

如果此方法永遠返回,您的應用程序將停止。