2017-08-11 34 views
9

Tôi có một giải pháp C# với một số dự án, một trong số đó là một máy chủ web chạy bởi IIS. Tôi đã đặt <UseGlobalApplicationHostFile>True</UseGlobalApplicationHostFile> trong tệp csproj của dự án đó.IIS CLI tạo applicationhost.config với trang web cho dự án của tôi

Khi tôi mở Visual Studio, nó tạo này trong ~/Documents/IISExpress/config/applicationhost.config:

<sites> 
     <site name="WebSite1" id="1" serverAutoStart="true"> 
      <application path="/"> 
       <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" /> 
      </application> 
      <bindings> 
       <binding protocol="http" bindingInformation=":8080:localhost" /> 
      </bindings> 
     </site> 
     <site name="SealingService" id="2"> 
      <application path="/" applicationPool="Clr4IntegratedAppPool"> 
       <virtualDirectory path="/" physicalPath="C:\Users\sehch\Documents\Paragon\ParagonCore\servers\SealingService\SealingService" /> 
      </application> 
      <bindings> 
       <binding protocol="http" bindingInformation="*:61800:localhost" /> 
       <binding protocol="https" bindingInformation="*:44300:localhost" /> 
      </bindings> 
     </site> 
     <siteDefaults> 
      <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" /> 
      <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> 
     </siteDefaults> 
     <applicationDefaults applicationPool="Clr4IntegratedAppPool" /> 
     <virtualDirectoryDefaults allowSubDirConfig="true" /> 
    </sites> 

Tôi muốn để có thể chạy dự án của tôi với IIS Express từ dòng lệnh (để xây dựng mục đích thử nghiệm tích hợp máy chủ). Làm thế nào tôi có thể tạo ra các trang web SealingService của applicationhost.config từ dòng lệnh (không cần mở Visual Studio)?

Tôi đã cố gắng chạy

"C:\Program Files (x86)\IIS Express\iisexpress.exe" 

trong thư mục giải pháp của tôi, nhưng nó chỉ tạo ra phần WebSite1.

+0

Tôi nghĩ đó là đúng một tính năng VS. Tại sao bạn muốn nó được "tạo ra"? Bạn luôn có thể đặt một bản sao của 'applicationHost.config' trong repo của bạn và trên máy CI, chạy IIS Express từ dòng lệnh để đọc tệp cấu hình đó. –

+1

@LexLi Tôi có thể làm điều đó, nhưng làm thế nào để tôi đặt 'physicalPath' khác nhau cho máy cục bộ và CI? Chúng tôi muốn có thể chạy thử nghiệm theo yêu cầu cục bộ, lý tưởng nhất là không thay đổi tệp cấu hình. –

+3

Để một biến môi trường trong đường dẫn, và sau đó đặt nó trong chuỗi CI của bạn vào thư mục chính xác, tôi nghĩ nó sẽ hoạt động. –

Trả lời

0

Nếu tôi hiểu chính xác, những gì bạn muốn làm là thêm phần bạn đã chỉ định cho tệp ~/Documents/IISExpress/config/applicationhost.config.

Bạn có thể làm điều này bằng cách sử dụng công cụ dòng lệnh AppCmd.exe:

"C:\Program Files\IIS Express\appcmd.exe" add site /name:SealingService /bindings:"http/*:61800:localhost" /physicalPath:"C:\Users\sehch\Documents\Paragon\ParagonCore\servers\SealingService\SealingService" 
"C:\Program Files\IIS Express\appcmd.exe" set site /site.name:SealingService /[path='/'].applicationPool:Clr4IntegratedAppPool 
"C:\Program Files\IIS Express\appcmd.exe" set site /site.name:SealingService /+bindings.[protocol='https',bindingInformation='*:44300:localhost'] 

Với lệnh đầu tiên chúng tôi tạo trang web, thiết lập của nó http ràng buộccon đường vật lý của nó; với người thứ hai, chúng tôi đặt hồ bơi ứng dụng với hồ sơ mong muốn; và với cái thứ ba, chúng tôi thêm https ràng buộc.

Nếu bạn sử dụng phiên bản x86 của IIS Express, bạn tìm APPCMD trong C: \ Program Files (x86) \ IIS tốc \ AppCMD.exe

+0

Có vẻ như nó sẽ chỉnh sửa tệp, nhưng điều gì tạo ra tệp ở địa điểm đầu tiên? –

+0

@ScottH bạn có thể chạy iisexpress.exe để tạo tệp ở vị trí đầu tiên –

Các vấn đề liên quan